【问题标题】:Java web application secured authorization via cookiesJava Web 应用程序通过 cookie 进行安全授权
【发布时间】:2012-09-22 11:15:48
【问题描述】:

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

【问题讨论】:

    标签: java security cookies login


    【解决方案1】:

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

    【讨论】:

    • 您认为在cookies中存储登录名和密码正常吗?
    • 我不确定这是否正常,但为了增加一层安全性,加密/解密该 cookie 中的用户信息不会有什么坏处。
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-07
      • 1970-01-01
      • 2018-02-03
      • 1970-01-01
      • 1970-01-01
      • 2021-10-15
      • 1970-01-01
      • 2022-12-05
      相关资源
      最近更新 更多