我们在azure vm中托管了一个简单的api,其中包括一个应用程序网关。应用程序运行良好,直到我们需要记录客户端ip,因为我们必须通过ipstack确定客户端的位置。
我已将此代码添加到我们的HomeController中
var ip = string.Empty;
if (HttpContext.Request.Headers.ContainsKey("X-Forwarded-For"))
{
ip = HttpContext.Request.Headers["X-Forwarded-For"].FirstOrDefault();
}
这很好,直到我决定使用Postman调用api并在请求中添加了X-Forwarded-For。
我将标头包含在我们的api中只是为了检查和...
"X-Forwarded-For": "<script>alert('test');</script>,192.168.0.1", //masked my real Ip
"X-Forwarded-For": "0.0.0.0,192.168.0.1" //fake ip (0.0.0.0)
反正有防止这种情况发生吗?
我在startup.cs中包含了以下代码,但还是没有运气。
services.Configure<ForwardedHeadersOptions>(c =>
{
//c.ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto;
//c.ForwardLimit = 1;
//c.KnownProxies.Add(IPAddress.Parse("127.0.0.0"));
c.ForwardedForHeaderName = "X-Forwarded-For-My-Custom-Header-Name";
});