PHP REMOTE_ADDR和安全会话

时间:2010-05-04 08:15:49

标签: php security

过去我用来建立安全会话的方法之一是在握手时记录客户端IP地址和用户代理。每次客户端移动页面并调用session_start()时,我还会检查存储的IP地址和用户代理是否仍然相同以防止劫持。

但是,如果有人从公司网络连接,则所有用户可能拥有相同的外部静态IP地址,并且他们也可以非常轻松地使用相同的用户代理。是否还有其他可以使用的指标,它们只对物理机器是本地的?

由于

3 个答案:

答案 0 :(得分:2)

并非真正可用和可靠的指标,没有。有时会由Proxies发出像X-HTTP-FORWARDED-FOR这样的标题,但任何自尊的路由器都不会告诉服务器哪个客户端正在访问它。

我认为你能做的最好是

的组合
  • 会话Cookie
  • 用户代理字符串

我不会检查IP地址,首先是你提到的原因,第二,因为像AOL这样的某些ISP使用的代理可以在同一个会话期间多次使用相同客户端的IP更改。

想到的“软”安全措施是Geolocation。如果知识产权在法国巴黎使用相同的会话cookie,并且同时(或仅一小时后)由位于澳大利亚悉尼的IP使用,则可能阴暗的事情正在发生。我说的是“可能”,因为有可能存在的合法情况 - 例如,巴黎的澳大利亚人转而使用他们公司的VPN。

如果你真的非常关注安全性,你可以在这种情况下构建触发一些警钟的东西,或者向用户询问一个秘密问题。有许多地理定位提供商,例如MaxMindGeobytes。我认为像这样的大联盟,亚马逊,PayPal等全球网站都可以防止欺诈。

答案 1 :(得分:0)

除此之外,我想补充一点,使用用户代理也可能导致问题。我们已经看到用户代理被任何数量的“安全”软件包以及ISP改变了。

答案 2 :(得分:-3)

会话ID。被发明是独一无二的