我正在开发一个webapp,它使用localStorage单独(http://JonathanHayward.com/calendar-todo)来允许用户创建一个服务器帐户,并将HTTPS上的东西同步到服务器上,这样webapp就不会被链接到一台计算机上。
我在一个安全装置上撞到了一块砖墙。存储明文、未加密的cookie是一个危险的标志,但我很难做出一种与存储未加密的cookie不同构的安排。如果我存储密码的散列加上一个秘密,那么只有我的服务器才能生成可接受的cookie,但是访问cookie的人可能也有纯文本密码。我所能想到的最好的方法是将ISO8601过期日期添加到秘密和密码中,然后让服务器将其与从今天到以后的n-1天计算出来的散列进行比较。在这一点上,我有一个看起来像纯文本的密码副本,只有这么长的时间.好多了,但没那么好。
从用户的角度来看,做一个无缝饼干的最佳方法是什么?在可行的情况下,它对饼干来说是无用的吗?
发布于 2012-08-29 03:30:37
登录时,创建一个随机值,该值存储在数据库中,并由您选择的时间过期(1天,1年,无论如何)。将该随机值传递给客户端浏览器,并按您选择的相应期限(仅限会话、年份等)进行。
现在,当客户端访问一个页面时,它们将向您的服务器发送随机cookie,而您的服务器与他们的密码没有连接。如果您验证cookie与数据库中的用户匹配,那么它们将被验证。
这也使您(以及您的用户,如果您实现了它)能够独立于密码更改的情况下杀死所有会话。这也意味着您应该实现代码,以便在更改密码时杀死所有会话。
https://security.stackexchange.com/questions/19400
复制相似问题