【问题标题】:hashed passwords in cookiescookie 中的哈希密码
【发布时间】:2012-07-09 06:51:34
【问题描述】:

网站安全: 用户要么重新登录 要么 从 cookie 中提取密码并登录(如果 cookie 密码无效,则被拒绝)。 + 多次登录失败导致拒绝。

密码经过 md5 散列和随机数加盐。

我的问题是,这不合适吗?

我知道它并不完全安全。有人可以访问用户的 cookie,破解散列的 cookie,然后知道用户密码。

但是,它是否相当安全?从某种意义上说,在任何地方存储纯文本密码是不道德的,这在某种程度上是不道德的吗?

【问题讨论】:

  • 以明文形式存储密码总是一个坏主意,无论您将密码存储在何处。
  • 不,不,不,不。不要使用 md5 散列密码以存储在 cookie 特别是中。
  • 一个会话标识符,或者一个更持久的'keep-me-logged-in' cookie,应该与凭据无关。随机更好,通过将其存储在某处进行验证。
  • 既然已经可以使用哈希进行身份验证,为什么还要破解哈希?
  • @gumbo 本机通行证可用于多个站点等。

标签: php security cookies hash passwords


【解决方案1】:

这是灾难性的。

正确的(或至少更好的)方法是创建一个足够长且随机的服务器端令牌,以便在用户登录时发送到 cookie 中。当服务器收到一个cookie,根据列表检查令牌以查看它是否匹配,如果匹配,则认为用户已验证。

一些杂记:

  • 您可能需要不时重置该令牌,以防止复制用户 cookie 的人无限期地访问您的站点。例如,如果令牌超过一周,则生成一个新令牌并将其发送到客户端,并在服务器端过期旧令牌。
  • 使用与用户名和密码相同的安全性来处理令牌服务器端,因为它被视为一种身份验证机制。不要只是把它放在每个人都可以访问的表格或文件中!
  • 对于任何具有破坏性或更高机密性的交易,请确保强制用户通过用户名和密码重新验证。例如,如果用户想要更改他们的密码,或者如果您使用电子邮件作为密码恢复机制并且他们想要更改他们的电子邮件地址,或者如果他们想要删除他们的帐户等,请让他们输入即使令牌存在,他们的用户名和密码也可以这样做。

您可能想查看OWASP site 以获取更多提示和最佳实践,但是,不要以任何形式发送密码,无论是散列、编码还是其他形式,给客户。

【讨论】:

  • 你知道这基本上是会话处理程序所做的。
  • 不,它没有,尽管很多人将身份验证硬塞到会话中,因为它又快又脏。作为最佳实践,我只在会话处理程序中保留特定于会话的信息,并让会话在用户关闭浏览器时过期。身份验证令牌保存在持久 cookie 中,仅在新会话开始时使用,并且从持久服务器端设置创建新会话。如果您尝试将身份验证硬塞到正常会话中,那么如果用户在多台计算机上使用您的网站,您就会遇到问题。
  • 好答案。此外,这是绝对必读的:stackoverflow.com/questions/549/…
猜你喜欢
  • 2012-07-07
  • 1970-01-01
  • 2023-04-08
  • 2020-04-27
  • 2011-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-30
相关资源
最近更新 更多