1

现在我在我的开发环境中实现了这个:

  • 我在登录时将 $SERVER['REMOTE_ADDR'] 存储为会话变量,然后在每个页面加载时重新检查页面以获取相同的 IP 地址。

我读的越多,我看到很多人不喜欢这个想法,因为代理等......那么,还有哪些其他选项仍然可以是好的做法?我在考虑 USER AGENT - 但是任何 joe-blow 都可以用一个简单的 firefox 插件来伪造它。也就是说,至少攻击者需要很好的猜测才能在第一次尝试时成功选择正确的...

人们怎么想?我很想简单地将文本:'SERVER_ADDR' 换成其他东西——所有其他代码都可以保持原样。

谢谢。

编辑: 我想我的主要目标是防止劫持/固定。理论上,IP 检查可以确保用户始终是用户(好吧,除非有人也欺骗了 IP……)——但会话基本上保存到这个庄园的 IP 地址……

4

2 回答 2

2

好吧,从一个花了我一半时间试图防止会话劫持的人那里,我可以告诉你这是一种错误的做法。是的,理论上你会保证用户是相同的,但实际上你会得到预期的“意外”结果。某些 ISP 会在每次加载页面时更改 IP。像 tor 这样的代理也这样做。您最好的选择就是使用用户代理。尽管这有缺点,但您不能拥有一个完全安全的系统。只需确保您在您的网站上防止 xss,并且很可能不会轻易伪造用户。我有其他实现。第一个涉及获取 IP 的第一部分并使用 ua 对其进行哈希处理,以确保 IP 始终在同一范围内,但后来我发现国家范围不同。另一个涉及国家查找以确保 IP 来自同一个国家,但话又说回来,这涉及额外的数据库查找。你能做的最好的事情就是让它变得更难,但它永远不会安全。


差点忘了。请记住,每当您增加用户的权限(例如在登录时)时,我都会重新生成会话。这将有助于防止会话 id 通过 url 传递的会话固定攻击。记住你的xss。

于 2011-03-13T14:45:35.677 回答
1

你总是可以在 IP: 上做一个掩码134.23.%.%

于 2012-08-24T20:27:40.047 回答