如何防止盗窃?

时间:2014-08-15 18:10:27

标签: django django-middleware

简单测试:

  1. 在一台机器上,我登录到网站(https)
  2. 我在不同的机器上登录了同一页面(未登录)
  3. 我在第二台机器的标头中切换了session_id - 从第一台机器
  4. 在第二台机器上我获得了所有第一台机器 - 我已登录,可以轻松浏览其数据等。
  5. 如何防止会话(也许是csrf令牌)被盗?

1 个答案:

答案 0 :(得分:4)

  • 确保您的会话密钥不可取。 GUID / UUID在这里工作正常(或者更好,哈希加密随机数生成器的输出)。
  • 确保永远不会以纯文本传输ID(使用SSL)
  • 经常更新您的会话ID(比如每5分钟左右)。

通过执行上述操作,攻击者无法拦截会话ID。使用secure Cookies也是个好主意。这将阻止cookie被发送用于非安全资源(例如,通过http加载图像/ css,不需要身份验证)

您可以选择尝试将会话绑定到IP地址,但这不是一个完美的解决方案。它无法防御与用户相同的NAT背后的攻击者,并且无法验证具有多条到达互联网的路由的有效用户。

澄清:您将始终能够看到拥有的会话ID。诀窍是确保没有其他人能看到它。它实际上是一个临时密码。大多数浏览器都会在磁盘上加密安全cookie(可逆)。它再次加密,以便通过SSL传输到服务器。

假设您正在与正确的服务器[a different issue]通话,攻击者获取会话ID的唯一方法是在您的计算机上安装恶意软件或破坏Ssl。

对id的频繁更改意味着攻击者在重新开始之前只会有一个短窗口。