避免ASP.NET中的会话劫持

sjm*_*ett 6 asp.net security session-hijacking

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

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

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

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

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

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

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

谢谢!

Jon*_*itt 6

看到这篇文章:防止会话劫持的最佳方法是什么?

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