1

现在,在我的应用程序中,用户的 cookie 以包含用户 ID 的特定格式生成。我希望我的cookie在每次登录后随机生成,这样即使cookie一旦被盗,黑客也永远不会永远使用它们。

以这种方式处理 cookie 的最佳做法是什么?我应该如何存储/检索它们(哈希表/数据存储...)?

谢谢

4

3 回答 3

3

HttpSession我建议使用GAE/J 支持 的内置 Java 会话对象。在此处查找有关如何在 GAE 上启用会话的文档。

您可以将会话设置为在特定时间段后过期,或者您可以在其中存储一个数字并在外部验证会话。

于 2012-02-09T01:58:18.573 回答
2

我同意 Rick 的观点,容器设计人员已经完成了验证请求是否来自同一用户的肮脏工作,您不想重新发明轮子吗?

HttpSession session = request.getSession(); 

这将创建一个新会话,如果一个尚不存在,但如果存在,它将为您提供现有会话。

session.setAttribute('key', value);

value 可以是任何 Serializable POJO,key 是一个字符串。您可以通过以下代码检索应用程序范围内的存储值。

Object value = (Object) session.getAttribute('key');

有关如何使用会话的更多信息,请查看 HttpSessions 的 Java 规范。

于 2012-02-11T16:31:11.823 回答
2

您可以尝试以下参数:

  • 用户身份
  • 生存时间(毫秒)
  • 哈希为:
    • 用户密码
    • 用户身份
    • 远程IP或浏览器
    • 生存时间(与以前完全相同)
    • 也许是预定义的字符串或盐

将其加入一个字符串(如13413:1826271762:b026324c6904b2a9cb4b88d6d61c81d1)并将其存储到一个 cookie 中,如USERID.

对于您需要的每个请求:

  • 检查指定时间是否有效(小于当前时间)
  • 按指定 ID 从数据库加载用户
  • 验证哈希签名(针对当前远程 IP/浏览器和当前密码)
于 2012-02-09T05:55:43.567 回答