【发布时间】:2014-10-23 22:42:43
【问题描述】:
该场景是一个运行的 Web 应用程序,无法在本地存储信息,例如会话。所以为了提供状态,这就是我的想法。服务器有一个用户列表和SHA256(passwords + salt)。当用户登录时,我会使用用户名设置名称 cookie,并使用 SHA256(SHA256(password + salt) . ip) 设置密钥 cookie。
这将允许服务器在不知道纯文本密码的情况下比较凭据,它不会在客户端的 cookie 中公开密码,并且会保护登录的凭据不被过滤到攻击者的系统中,因为它会仅适用于那个 IP 地址。
我能看到的唯一缺点是无法强制到期。因此,它基本上是该用户/密码/IP 组合的终身 cookie,或者至少在网络应用删除 cookie 或用户更改密码之前。
【问题讨论】:
-
我认为您应该引入会话的概念,因为可以手动或在日期/时间轻松过期。此外,cookie 应基于安全随机生成的值,而不是密码值的哈希值。
-
除了您指出的问题外,我没有看到任何其他问题。但是如果你有一个用户和密码列表,为什么你不能添加一个与用户列表相关的唯一令牌列表,然后只将令牌写入 cookie(基本上是会话)?