假设我们正在跟踪web服务的最终用户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并继续使用我们的web服务?
提前感谢您的帮助。
发布于 2008-11-25 16:54:40
REMOTE_ADDR由web服务器根据来自客户端的连接生成。HTTP_X_FORWARDED_FOR基于客户端发送的HTTP头。
您不能信任来自客户端的输入,特别是容易被伪造的输入,比如HTTP头。客户端可以将任何粘贴到该HTTP_X_FORWARDED_FOR头中。
发布于 2008-11-25 16:57:04
如果用户使用透明代理,那么上面的代码将获得真实的IP地址。但是,如果他们使用匿名代理(如Anonymizer),那么就没有办法获得用户的实际IP地址。
https://stackoverflow.com/questions/318069
复制相似问题