gpt4 book ai didi

php - 无需 SSL 的安全身份验证

转载 作者:可可西里 更新时间:2023-11-01 07:45:57 24 4
gpt4 key购买 nike

我想到了一个没有 SSL 的身份验证系统,它看起来相当安全。我是否忽略了一些重要的事情?

  1. 用户点击登录页面
  2. 服务器生成传输盐(t-salt)并存储在 session 中
  3. 服务器将 t-salt 作为加载的登录页面的一部分发送给用户
  4. 用户输入用户名和密码并点击提交
  5. 浏览器 MD5 连同 t-salt 一起加密他们的密码
  6. 浏览器向服务器发送用户名和MD5(密码+t-salt)
  7. 服务器使用用户名(*)从数据库中检索密码
  8. 服务器 MD5 加密从步骤 7 中检索到的密码以及在步骤 2 中存储在 session 中的 t-salt
  9. 服务器比较第 6 步和第 8 步的两个 MD5
  10. 如果相同,则登录成功
  11. 服务器从 session 中删除 t-salt(在步骤 2 中添加)以防止潜在的重放攻击

* 请注意,在第 7 步中检索到的密码不能为第 8 步工作而进行单向加密(这是通常的做法)。但是双向加密系统仍可用于在数据库级别保护密码。 (嘿,这带来了允许更加用户友好的密码恢复过程的附带好处。)

除了我上面的注释,这个方案的优点和缺点是什么?

最佳答案

这对于中间人攻击来说是完全开放的。没有什么可以阻止攻击者嗅探链接并在它从服务器-> 客户端发送时获取盐,或者在它从客户端-> 服务器发送时获取散列密码,然后重放。

在每次尝试后使新的 salt 失效并生成一个新的 salt 将防止简单的重放,但随后它归结为竞争条件 - 攻击可以在用户之前提交他们的登录尝试吗?即便如此,由于攻击者坐在中间,他们可能会中断用户的链接,捕获加盐密码,然后自己提交并捕获 session 。

关于php - 无需 SSL 的安全身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6947221/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com