在Request.ServerVariables中并没有HTTP_X_FORWARDED_FOR这个变量,只有REMOTE_ADDR这个变量,但是这两个变量都能够取得客户端IP地址。那么他们之间的区别是什么呢?
在ASP中使用 Request.ServerVariables("REMOTE_ADDR") 来取得客户端的 IP 地址,但如果客户端是使用代理服务器来访问,那取到的就是代理服务器的IP地址,而不是真正的客户端 IP 地址。要想透过代理服务器取得客户端的真实 IP 地址,就要使用Request.ServerVariables("HTTP_X_FORWARDED_FOR") 来读取。
不过要注意的事,并不是每个代理服务器都能用 Request.ServerVariables("HTTP_X_FORWARDED_FOR") 来读取客户端的真实 IP,有些用此方法读取到的仍然是代理服务器的 IP。
还有一点需要注意的是:如果客户端没有通过代理服务器来访问,那么用Request.ServerVariables ("HTTP_X_FORWARDED_FOR") 取到的值将是空的。因此,如果要在程序中使用此方法,可以这样处理:
......
userip = Request.ServerVariables("HTTP_X_FORWARDED_FOR")
If userip = "" Then userip = Request.ServerVariables("REMOTE_ADDR")
......
即:如果客户端通过代理服务器,则取 HTTP_X_FORWARDED_FOR 的值,如果没通过代理服务器,就取 REMOTE_ADDR 的值。
当然,上面的这种做法并不是万能的,就像第三段提到的那样,你有没有考虑到如果用户使用的是2级代理、3级代理、4级代理........
分享到:
相关推荐
为了确保能够正确地识别用户的真实IP,开发者需要理解两个重要的服务器变量:REMOTE_ADDR和HTTP_X_FORWARDED_FOR。以下是对这两个变量进行详细说明的知识点。 首先,REMOTE_ADDR是ASP中一个基本的服务器变量,它...
一、没有使用代理服务器的情况: REMOTE_ADDR = 您的 IP HTTP_VIA = 没数值或不显示 HTTP_X_FORWARDED_FOR = 没数值或不显示 二、使用透明代理服务器的情况:Transparent Proxies REMOTE_ADDR = 最后一个代理服务器 ...
你可以尝试使用`$_SERVER['HTTP_X_FORWARDED_FOR']`或`$_SERVER['HTTP_CLIENT_IP']`。但需要注意的是,这些头可以被轻易伪造,因此在安全场景下不能完全信赖。 2. **使用HTTPS和SSL**:在HTTPS环境下,由于数据是...
问题分析 熟悉nginx的都知道,nginx不...这里需要匹配$remote_addr $http_x_forwarded_for这两项其中一个获取是内部ip即可访问。 配置nginx $remote_addr不匹配 $flag为01,$http_x_forwarded_for也不匹配 $flag为011
此扩展允许您快速更新各种 X-Forwarded-For、X-Originating-IP、X-Remote-IP 和 X-Remote-Addr HTTP 标头 打开Chrome浏览器的扩展程序: 地址栏直接输入:chrome://extensions/ 把下载到的文件解压后,点击加载已...
文章中提到的`getIP()`函数尝试依次检查`HTTP_X_FORWARDED_FOR`、`HTTP_CLIENT_IP`和`REMOTE_ADDR`来获取IP,这在处理代理环境时很有用,但存在安全隐患。攻击者可以通过自定义`HTTP_X_FORWARDED_FOR`头部字段,向...
//设置默认值 if (isset($_SERVER[‘HTTP_X_FORWARDED_FOR’])) { $realip = $_SERVER[‘HTTP_X_FORWARDED_FOR’]; } elseif (isset($_SERVER[‘HTTP_CLIENT_IP’])) { $realip = $_SERVER[‘HTTP_CLIENT_IP’]...
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy true; proxy_pass http://127.0.0.1:9009/; proxy_redirect off; } ``` ...
在上述代码中,首先尝试从HTTP_X_FORWARDED_FOR获取IP地址,如果为空,则退回到REMOTE_ADDR。REMOTE_ADDR返回的是直接与服务器建立连接的客户端的IP地址,通常不会被伪造。 然而,使用HTTP_X_FORWARDED_FOR存在几个...
一般来说,获取客户端IP地址有两种主要方式:通过`HTTP_X_FORWARDED_FOR`环境变量或`REMOTE_ADDR`环境变量。这两种方式分别适用于不同的场景: 1. **`HTTP_X_FORWARDED_FOR`**: - 这个环境变量主要用于处理经过...
总之,在ASP中获取用户IP地址,不仅要考虑到直接连接的情况,还要处理代理服务器的情况,通过`REMOTE_ADDR`和`HTTP_X_FORWARDED_FOR`结合使用可以提高获取IP的准确性。不过,这种方法依赖于代理服务器的正确配置,且...
当`HTTP_X_FORWARDED_FOR`为空或包含“unknown”时,使用`REMOTE_ADDR`获取客户端IP地址: ```vb If Request.ServerVariables("HTTP_X_FORWARDED_FOR") = "" OR InStr(Request.ServerVariables(...
'"$http_user_agent" "$http_x_forwarded_for"'; ``` 这将在日志文件中记录下客户端的IP地址,帮助进行访问分析和故障排查。 总的来说,获取Nginx反向代理下的真实IP需要理解Nginx的配置机制,正确设置HTTP头部,...
讨论获取客户端IP 地址前,我们首先下弄明白的是以下三个的具体含义:REMOTE_ADDR,HTTP_CLIENT_IP,HTTP_X_FORWARDED_FOR REMOTE_ADDR 是你的客户端跟你的服务器“握手”时候的IP。如果使用了“匿名代理”,REMOTE...
$_SERVER[“HTTP_X_FORWARDED_FOR”] : $_SERVER[“REMOTE_ADDR”]; $user_IP = ($user_IP) ? $user_IP : $_SERVER[“REMOTE_ADDR”]; echo $user_IP; ?> <?php function get_real_ip(){ $ip=...
proxy_set_header X-Forwarded-For $remote_addr; proxy_pass http://localhost:8080/zwh/; } } server { listen 80; server_name test1.zwh.com; location / { proxy_set_header Host $host; proxy_...