【问题标题】:How to retrieve the corresponding HttpSession based on Cookie如何根据Cookie获取对应的HttpSession
【发布时间】:2017-07-02 00:17:25
【问题描述】:

我想建立一种机制来使用 Cookie 对象跟踪每个用户的 http 会话。因此,我将用户 ID 存储在 Cookie 中,然后我将在响应正文中与客户端通信(一旦登录过程成功),例如:

Cookie loginCookie = new Cookie("userId", userId);
httpServletResponse.addCookie(loginCookie);

请教三个问题:

1) 如何根据用户的 Cookie 检索给定的用户 http 会话?我是否应该为此存储 JSESSIONID 而不是 userId?

2) 加密用户 cookie 不会阻止 cookie 被一些攻击者窃听客户端和服务器之间的通信。因此,攻击者可以重用 cookie 以作为实际用户请求服务器,因为每次用户请求服务器时都会传递相同的 cookie。我真的不知道加密 cookie 有什么帮助。我是否也应该使用数字签名算法来验证发件人的身份?

【问题讨论】:

    标签: http session servlets cookies encryption


    【解决方案1】:
    1. 您应该将会话 ID 存储在 cookie 中,并将用户 ID 存储在服务器端会话中。

    2. 如果您使用的是 https,那么重复使用 Cookie 应该不是问题,这可以降低窃听的风险。如果您不使用 https,则任何加密方式都无法帮助您。

    【讨论】:

    • 感谢您的及时回答。关于第一点,我应该如何在会话 ID 和用户 ID 之间建立链接?就像我说的那样,我的目标是检索与给定用户对应的会话。
    • 您知道会话 ID 在特定浏览器中属于特定用户,因为他有 cookie。您可以通过检查会话状态中的用户 ID 来查看它是哪个用户。
    猜你喜欢
    • 2010-11-18
    • 2011-11-30
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 2016-02-17
    • 2016-09-24
    • 1970-01-01
    相关资源
    最近更新 更多