读取X-Forwarded-For标头

问题描述

| 我想在请求中读取“ 0”头值的值。 我试过了
HttpContext.Current.Request.Headers[\"X-Forwarded-For\"].Split(new char[] { \',\' }).FirstOrDefault();  
在C#中。 还是我需要将标头除以
\":\"
,然后取第二个字符串? 我问这个是因为,维基百科说   该字段的一般格式为:   X-Forwarded-For:客户端1,代理1,代理2     

解决方法

        您返回的格式为client1,proxy1,proxy2 因此,您用逗号将其分割,并首先看到您的客户端的IP。     ,        如果有帮助,考虑到X_FORWARDED_FOR标头,这是获取用户IP地址的简单方法
var forwardedFor = Request.ServerVariables[\"HTTP_X_FORWARDED_FOR\"];

var userIpAddress = String.IsNullOrWhiteSpace(forwardedFor) ?
    Request.ServerVariables[\"REMOTE_ADDR\"] : forwardedFor.Split(\',\').Select(s => s.Trim()).FirstOrDefault();
    ,        不要忘记X-Forwarded-For可以包含客户端在此处编写的任何内容。它可以在内部包含XSS或SQL注入。     ,        有时前者可能包含一个无用的本地(专用)保留地址。同样,第一个位置也可以进行欺骗。 更新-2018年4月:对第一个地址为本地(私有)的实时生产网站进行抽样调查表明最终用户的网络或其ISP上存在一些配置问题。对于相同的最终用户,这种情况很少发生(<1%),并且始终如一。 下面的答案建议从右到左走,直到您到达一个公共地址。不确定是否有人这样做,但是指出了问题所在。 https://husobee.github.io/golang/ip-address/2015/12/17/remote-ip-go.html