【发布时间】:2010-08-08 17:10:26
【问题描述】:
我有一个代码可以将用户名和密码等用户信息保存在 cookie 中。
问题是:
在 cookie 中存储像纯文本这样的信息是不安全的。我的数据库存储哈希密码,所以我可以将这些哈希保存在 cookie 中并稍后检索它们,但如果我这样做,我将无法填写密码的文本框导致哈希字符串对它来说太长了。
有什么解决办法吗?
【问题讨论】:
我有一个代码可以将用户名和密码等用户信息保存在 cookie 中。
问题是:
在 cookie 中存储像纯文本这样的信息是不安全的。我的数据库存储哈希密码,所以我可以将这些哈希保存在 cookie 中并稍后检索它们,但如果我这样做,我将无法填写密码的文本框导致哈希字符串对它来说太长了。
有什么解决办法吗?
【问题讨论】:
您永远不应该以纯文本形式存储密码,即使是经过哈希处理的密码也可能容易受到反向查找的影响,除非它被正确加盐。 ASP.NET Forms Authentication 已经允许您创建允许用户保持登录状态的 Persistent 身份验证 cookie,因此您应该改用它。查看Creating the Forms Authentication Cookies 时的 Timeout、expires 和 IsPersistant 属性。
或者,您可以设置一个token based authentication 系统,用户在输入登录信息后通过该系统获得一个安全令牌,该令牌在指定的时间内有效。这就是 Live ID 和 Google 帐户的工作方式,它们通常将令牌存储在一个 cookie 中,一次有效期为数周。
【讨论】: