Request.ServerVariables(“REMOTE_ADDR”)与Request.ServerVariables(“HTTP_X_FORWARDED_FOR”)的安全隐患

时间:2008-11-25 16:49:28

标签: web-services security asp-classic vbscript

假设我们正在跟踪网络服务的最终用户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并继续使用我们的网络服务?

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:9)

REMOTE_ADDR由Web服务器根据客户端的连接生成。 HTTP_X_FORWARDED_FOR基于客户端发送的HTTP标头。

您无法信任来自客户端的输入,尤其是容易伪造的输入,例如HTTP标头。客户可以将任何粘贴到HTTP_X_FORWARDED_FOR标题中。

答案 1 :(得分:0)

如果用户使用透明代理,则上述代码将获得真实的IP地址。如果他们使用的是匿名代理(比如Anonymizer),那么实际上无法获得用户的实际IP地址。