asp.net - 避免 ASP.NET 中的 session 劫持

标签 asp.net security session-hijacking

我最近读了一篇关于使 ASP.NET session 更安全的文章 here乍一看它确实很有用。

以前,我一直在 session 中存储用户的 IP 地址,然后确保在每个后续请求中请求的 IP 与存储的 IP 相同。

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

我已经在他们的代码中发现了一个潜在的缺陷:如果你以某种方式获得了用于生成 MAC 的 key ,那么你就可以使用你自己的 IP 生成一个有效的 MAC - 你甚至不需要伪造 session 启动的 IP。

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

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

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

谢谢!

最佳答案

查看这篇文章:What is the best way to prevent session hijacking?

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

关于asp.net - 避免 ASP.NET 中的 session 劫持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5107495/

相关文章:

asp.net - 命名 CSS 选择器的正确方法是什么。它的工作方式似乎不一致

ASP.NET Core 策略库使用 RequireUser 和字符串数组进行授权

css - z-index 不适用于模态弹出窗口扩展器

PHP 检查用户代理和 IP 以防止 session 劫持

ASP.NET TreeView : PostBack after Checked Changed?

security - 使用 OAuth 和不记名 token 将用户角色从 ASP.NET Identity 返回到 AngularJS 应用程序

linux - www 文件夹内的 .ssh/authorized_keys 文件

java - 处理 Java 加密异常

asp.net - ASP.NET中 session 劫持的反制措施