security - 防止 session 劫持的最佳方法是什么?

标签 security session cookies

具体而言,这是关于使用客户端 session cookie 来识别服务器上的 session 时的情况。

最好的答案是对整个网站使用 SSL/HTTPS 加密,并且可以最好地保证中间人攻击无法嗅探现有的客户端 session cookie?

也许第二好的方法是对存储在 session cookie 中的 session 值本身使用某种加密?

如果恶意用户可以物理访问计算机,他们仍然可以查看文件系统以检索有效的 session cookie 并使用它来劫持 session ?

最佳答案

加密 session 值的效果为零。 session cookie已经是一个任意值,对其进行加密只会生成另一个可以嗅探的任意值。

唯一真正的解决方案是 HTTPS。如果您不想在整个站点上使用 SSL(也许您有性能问题),则可以仅使用 SSL 保护敏感区域。为此,首先确保您的登录页面是 HTTPS。当用户登录时,除了常规 session cookie 之外,还设置安全 cookie(这意味着浏览器将仅通过 SSL 链接传输它)。然后,当用户访问您的“敏感”区域之一时,将其重定向到 HTTPS,并检查该安全 cookie 是否存在。真正的用户会拥有它, session 劫持者则不会。

编辑:这个答案最初写于 2008 年。现在是 2016 年,没有理由不在整个网站上使用 SSL。不再有纯文本 HTTP!

关于security - 防止 session 劫持的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22880/

相关文章:

PHP 数据 session 存储

javascript - 为什么使用 JavaScript eval 函数是个坏主意?

security - 存储客户端证书的最佳实践?

php - 创建javascript函数来销毁php session

node.js - Connect-mongo session 不会被自动删除

javascript - 使用 Cookie 保存 JQuery 切换状态

authentication - 如何在没有微软身份的情况下进行 jwt 身份验证 blazor 服务器?

javascript - 使用 Rails 4 将用户选择的国家/地区存储在 cookie 中

spring - 是否有任何内置方法可以利用外部服务器的 "tomcat-users.xml"?

security - secret URL 可以被搜索引擎索引吗?