使用cookie和java创建一个非常安全的登录

时间:2012-06-27 18:00:09

标签: security playframework playframework-2.0

我正在使用play framework2设计一个非常安全的登录机制。由于Play没有会话概念并且将内容保存在cookie中(我喜欢),我想知道我需要考虑哪些安全措施。我们显然会使用SSL来传递登录凭据,而且cookie也会成为某些用户信息的加密值,例如他们的电子邮件或用户ID。是否有人可以嗅到该cookie或从另一个用户的cookie中获取它并重新使用它?我怎样才能让这更安全?

3 个答案:

答案 0 :(得分:2)

事实上,cookie未加密。它已签署。此签名来自application.conf中的application.secret。

这意味着任何人都可以看到Cookie的内容(并最终尝试欺骗其他会话或更改其登录/ ID /令牌......)

来自Play文档:

  

当然,cookie值是使用密钥签名的,因此客户端无法修改cookie数据(或者它将被无效)。

我不是安全大师,但是,如果你保密你的应用程序秘密,它对我来说足够接近。

欢迎讨论签名的强度!

答案 1 :(得分:1)

如果您真的希望它非常安全,您应该通过SSL进行一般通信,不仅仅是为了登录。否则有人可以获得Cookie。您使用cookie解决方案或更好的播放会话的主要问题是您没有会话超时。所以想象一下,我能够获得cookie,我可以永远使用这个用户帐户。所以你需要像会话超时这样的东西。如果来自同一客户端的请求多一个,那么这变得非常棘手,因为两者都试图更改相同的cookie。解决方法是通过缓存处理会话超时,但请记住,如果在群集中运行,则需要分布式缓存解决方案。

您可以尝试按照https://launchpad.net/permsec我写的安全解决方案进行更改。这是我必须做的一个开放的待办事项。

答案 2 :(得分:1)

如果存在窃听通信和窃取cookie的风险,您可以使攻击者更加努力。例如,在签名cookie中添加计算机的IP地址。如果有人偷了它,他将不得不使用与受害者相同的IP地址。这并非不可能,但它提高了标准。