Java中的Cookie和安全性(GAE)

时间:2012-02-08 14:55:25

标签: java google-app-engine cookies session-cookies httpcookie

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

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

由于

3 个答案:

答案 0 :(得分:3)

我建议使用GAE / J支持的内置Java会话对象HttpSession。 关于如何启用GAE会话的文档Look here

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

答案 1 :(得分:2)

您可以尝试以下参数:

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

将其加入一个字符串(如13413:1826271762:b026324c6904b2a9cb4b88d6d61c81d1)并将其存储到像USERID这样的Cookie中。

在您需要的每一个请求上:

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

答案 2 :(得分:2)

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

HttpSession session = request.getSession(); 

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

session.setAttribute('key', value);

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

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

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