防止更改X-Forwarded-For

时间:2019-05-25 23:46:35

标签: c# azure .net-core http-headers

我们在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。

postman fake ip injected

我将标头包含在我们的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";
            });

0 个答案:

没有答案