8

我最近在这里阅读了一篇关于使 ASP.NET 会话更安全的文章,起初它似乎非常有用。

以前我一直在会话中存储用户的 IP 地址,然后确保在每个后续请求中请求 IP 等于存储的 IP。

文章中的代码还通过检查 IP 地址来保护会话,只是它存储了一个包含用户 IP 的散列消息身份验证代码作为会话 cookie 的一部分。它会为每个请求创建两次哈希 MAC,我想这会减慢速度。

我已经在他们的代码中看到了一个潜在的缺陷:如果你以某种方式获得了用于生成 MAC 的密钥,那么你就可以使用你自己的 IP 生成一个有效的 MAC——你甚至不必伪造 IP会议开始于。

对于一个简单的问题,这似乎是一个过于复杂的解决方案,它不仅会产生更大的开销,而且比简单的方法更容易受到攻击——除非我完全没有抓住重点。

那么,为什么这种方法比我一直使用的更简单的方法更安全呢?

顺便说一句,作者还指出您不应该在比较中使用整个 IP 地址,因为如果某些用户的 IP 在代理后面,则它们会更改每个请求。如果您检查 X_FORWARDED_FOR,情况仍然如此吗?

谢谢!

4

1 回答 1

6

请参阅此帖子:防止会话劫持的最佳方法是什么?

基本上,您应该在登录页面和任何其他“敏感区域”上使用 HTTPS。

于 2011-02-24T16:44:31.323 回答