У нас есть простой API, который находится в Azure VM, мы включили шлюз приложений.И приложение работает нормально, пока нам не потребуется регистрировать 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 в запросе.
![fake ip injected](https://i.stack.imgur.com/9WkBK.png)
Я включил заголовок в результате в наш 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";
});