如果我将这两者都扔进数据库,是否足以阻止网站访问者欺骗他们来自不同的IP地址?
$ip1 = $_SERVER['HTTP_X_FORWARDED_FOR'];
$ip2 = $_SERVER['REMOTE_ADDR'];
答案 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将不可用。