防止IP欺骗

时间:2012-02-10 00:28:25

标签: php

如果我将这两者都扔进数据库,是否足以阻止网站访问者欺骗他们来自不同的IP地址?

$ip1 = $_SERVER['HTTP_X_FORWARDED_FOR'];
$ip2 = $_SERVER['REMOTE_ADDR'];

5 个答案:

答案 0 :(得分:3)

简短回答 - 不。您永远不能保证 IP与个人之间的链接。但是,对于几乎所有实际目的,是的,这已经足够了。

除非你真的希望有人花大力气隐藏他们的知识产权,否则你应该没事。

这实际上取决于你要做的是否足够好。

修改:刚刚看到您对第一篇文章的评论。一个选择是看Evercookies - 它们极具侵略性和不道德,但它们确实做得非常好,所以这是你的召唤。

答案 1 :(得分:1)

不,欺骗X-FORWARDED-FOR非常容易,它实际上是作为标题发送的。尝试制作帐户系统或让它依赖电子邮件或其他东西。你不能单独信任IP。

鉴于您的上述评论,$_SERVER['REMOTE_ADDR']很可能就足够了,因为他们每次想要执行该操作时都必须更改IP,这可能涉及代理或很可能是Tor。

答案 2 :(得分:1)

HTTP_X_FORWARDED_FOR是一个HTTP标头,因此很容易被欺骗。 REMOTE_ADDR是由CGI规范中指定的Web服务器提供的环境变量。它不容易被欺骗。所以缓存任何一个都没有真正的意义。

如果有人使用受感染的代理服务器欺骗HTTP_X_FORWARDED_FOR标头,那么您就无法做到这一点。

然而,应该更容易相信非代理请求不会被欺骗,因为除非攻击者在同一个子网上,否则它们仅限于盲目欺骗攻击,这需要他们猜测序列和确认TCP连接的编号。这在现代网络上很难做到。即使他们设法做到这一点,他们也无法接收任何路由到欺骗性IP的数据,因此很容易过滤掉任何盲目欺骗攻击。

现在,对于某人实际使用欺骗性IP来与Web服务器建立匿名TCP连接,实际上并不可能(确定,没有什么是不可能的,但它确实需要非常具体的情况并且应用有限)。数据包欺骗最多用于DDoS和泛洪攻击。

答案 3 :(得分:0)

不,您可能只能避免使用某些代理服务器。

仍然有一些选项允许您“隐藏”您的真实IP(以及许多人喜欢他们的隐私),例如:

IP记录无论如何都会帮助你再次使用某种类型的用户(其中​​许多人使用来自其提供池的动态ips,所以没有法院命令,你永远不会知道是谁,并禁止许多人与他/她)但是对付管理员150机器......

答案 4 :(得分:0)

当任何用户使用代理服务器访问您的站点时,两种情况都不同。您可以使用HTTP_X_FORWARDED_FOR服务器变量获取IP地址。因此,代理服务器发布了“HTTP_X_FORWARDED_FOR”,其中描述了客户端IP ,'REMOTE_ADDR'描述代理服务器的IP。

当任何用户在没有任何代理服务器的情况下访问您的站点时,您可以使用REMOTE_ADDR服务器变量获取IP地址。因此,在这种情况下,HTTP_X_FORWARDED_FOR和HTTP_VIA将不可用。