【问题标题】:Is this a secure way to handle cookies?这是处理 cookie 的安全方式吗?
【发布时间】:2014-10-23 22:42:43
【问题描述】:

该场景是一个运行的 Web 应用程序,无法在本地存储信息,例如会话。所以为了提供状态,这就是我的想法。服务器有一个用户列表和SHA256(passwords + salt)。当用户登录时,我会使用用户名设置名称 cookie,并使用 SHA256(SHA256(password + salt) . ip) 设置密钥 cookie。

这将允许服务器在不知道纯文本密码的情况下比较凭据,它不会在客户端的 cookie 中公开密码,并且会保护登录的凭据不被过滤到攻击者的系统中,因为它会仅适用于那个 IP 地址。

我能看到的唯一缺点是无法强制到期。因此,它基本上是该用户/密码/IP 组合的终身 cookie,或者至少在网络应用删除 cookie 或用户更改密码之前。

【问题讨论】:

  • 我认为您应该引入会话的概念,因为可以手动或在日期/时间轻松过期。此外,cookie 应基于安全随机生成的值,而不是密码值的哈希值。
  • 除了您指出的问题外,我没有看到任何其他问题。但是如果你有一个用户和密码列表,为什么你不能添加一个与用户列表相关的唯一令牌列表,然后只将令牌写入 cookie(基本上是会话)?

标签: security cookies web


【解决方案1】:

您不得在 cookie 中的任何地方使用密码,即使它已加密。
为每个用户提供一个 ID,并且在每次登录时您必须:
1.更新登录时间
2. 创建唯一的会话 ID
3. 设置具有唯一会话 id 的 cookie

现在对服务器的每个请求
1. 验证会话 cookie
2. 查看登录时间和当前服务器时间。

这只是基本结构..

【讨论】:

  • 你知道哈希是单向函数吗?没有人会在短期内逆转 sha256。另外,这个问题的重点是无法保存会话信息的情况,因此您的解决方案不起作用。
  • 可能你想要的无法实现..因为你必须保存一些东西来识别用户..我个人认为它是每个用户的可变唯一会话 id..你如何创建好的会话 id 是在你身上......你使用的加密技术......
  • 正如 Dendory 所说,您的回答没有意义。 1- 加密!= 散列 ... 2- 你没有解决他的问题,请说明为什么这不是一种安全的方式,而不是仅仅建议他做他说他不能做的事情。
  • 你说它不能在本地存储信息。具有讽刺意味的是,您正在存储带有散列凭据的 cookie。如果您可以存储cookie..然后将其到期时间设置为1小时或其他。或者正如@silverlightfox 所说的介绍会议..
猜你喜欢
  • 2013-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-29
  • 1970-01-01
  • 2016-09-04
  • 2010-11-08
相关资源
最近更新 更多