避免ASP.NET中的会话劫持

时间:2011-02-24 16:30:01

标签: asp.net security session-hijacking

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

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

本文中的代码还通过检查IP地址来保护会话,除了它存储包含用户IP作为会话cookie一部分的散列消息验证代码。它会在每次请求时创建一个哈希MAC两次,我想这会让事情变慢一些。

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

对于一个简单的问题来说,这似乎是一个过于复杂的解决方案,它不仅会产生更大的开销,而且比普通的方法更容易受到攻击 - 除非我完全忽略了这一点。

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

稍作一点,作者还指出,您不应该在比较中使用整个IP地址,因为如果某个用户的IP位于代理后面,则会更改每个请求。如果你检查X_FORWARDED_FOR,这仍然是这种情况吗?

谢谢!

1 个答案:

答案 0 :(得分:6)

请参阅此帖子:What is the best way to prevent session hijacking?

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