1

我有一个 java servlet web 应用程序。在应用程序中,我有两个授权逻辑: 1. 通过用户名和密码进行授权 - 通过 Web 表单使用用户填写的用户名和密码进行标准登录。2. 通过cookies授权。一次,用户填写用户名和密码,并选中“记住我”复选框,此后他不应该输入用户名/密码。我对选项二(cookies)有疑问。目前的逻辑是:我检查用户是否选中了“记住我”,我得到他的用户名和密码哈希,并将其存储到 cookie 中。(两个cookie:用户名密码) 但是,我认为这种方式并不安全。因为有人可以窃取 cookie 并访问网络应用程序。问题是:通过 cookie 访问授权用户的最佳安全方式是什么?我应该在饼干里储存什么?

4

2 回答 2

1

首先,您想使用 SSL/TLS 与您的服务器进行通信。您可以为您的网站购买便宜的证书,所以不要担心。即使这样,您也不应该将用户名和密码存储在 cookie 中,这不安全,因为有人可以破解他们的计算机并检索他们的密码,这不是您的问题,但甚至不要让自己陷入混乱并让它来回来咬你。

您通常会创建一个在一定时间后过期的随机 sessionid,并将其与当前时间戳一起插入到您的用户表中。该 sessionid 是您存储在 cookie 中的内容,每次他们尝试使用 cookie 登录时,您都会在数据库中检查它。如果它太旧(您检查时间戳与您决定的任何长度),那么您使 sessionid 无效并要求他们使用他们的用户名和密码登录,从而创建一个新的 sessionid。

还有更多功能可以防止 cookie 被复制到另一台计算机(您不必担心它会通过网络复制,这就是 SSL/TLS 的用途),例如将 ip 地址和浏览器添加到 cookie,和其他一些东西,但这对于你正在做的事情可能有点过头了。

于 2012-10-01T15:22:30.390 回答
0

如果您使用的是 HTTPS(应该如此),除非他们从该人的实际计算机中获取该信息,否则没有人可以“窃取” cookie。只需确保一旦用户登录,他们就不会使用正常的 HTTP 请求访问页面,否则您的 cookie 数据将被暴露。

于 2012-10-01T15:18:27.660 回答