Java Web应用程序通过cookie保护授权

时间:2012-10-01 15:15:51

标签: java security cookies login

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

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

如果您使用的是HTTPS(您应该使用HTTPS),除非他们从该人的实际计算机获取该信息,否则任何人都无法“窃取”该Cookie。只需确保用户登录后他们不会使用正常的HTTP请求访问该页面,否则您的Cookie数据将被公开。