假设我们正在跟踪网络服务的最终用户IP:
ip = Request.ServerVariables("HTTP_X_FORWARDED_FOR")
If ip = "" Then
ip = Request.ServerVariables("REMOTE_ADDR")
End If
我读过这是检索最终用户IP的最佳方法,因为它甚至适用于透明代理上的用户。
如果我们使用最终用户IP地址过滤恶意用户,上述方法是否会产生任何安全隐患,而不是仅使用Request.ServerVariables(“REMOTE_ADDR”)?
例如,如果我们通过最终用户IP禁止恶意用户,他们是否可以通过代理轻松更改其IP并继续使用我们的网络服务?
提前感谢您的帮助。
答案 0 :(得分:9)
REMOTE_ADDR
由Web服务器根据客户端的连接生成。 HTTP_X_FORWARDED_FOR
基于客户端发送的HTTP标头。
您无法信任来自客户端的输入,尤其是容易伪造的输入,例如HTTP标头。客户可以将任何粘贴到HTTP_X_FORWARDED_FOR
标题中。
答案 1 :(得分:0)
如果用户使用透明代理,则上述代码将获得真实的IP地址。如果他们使用的是匿名代理(比如Anonymizer),那么实际上无法获得用户的实际IP地址。