在另一个域上安全地设置会话cookie的最佳方法

时间:2012-10-24 15:58:03

标签: php security cookies hash

我们目前有2个网站http://www.foo.co.ukhttps://secure.foo.com

www网站没有SSL证书,并且位于不同的域中。

我们在http://www.foo.co.uk上有一个登录按钮,点击后会打开一个带有表单的https://secure.foo.com iframe,当用户登录时会在该域上创建一个会话Cookie(foo.com )。

然后需要将会话cookie复制到foo.co.uk,这样做会将您重定向到http://www.foo.co.uk/setcookie.php?session=abcd1234,这允许我们在原始域上设置相同的cookie。

这不是一个非常安全的解决方案,所以我一直在研究如何让它变得更好 - 我发现的最好的想法是使用类似hash_hmac的东西以及params到setcookie.php发送哈希脚本然后在创建cookie之前在另一端验证它。

虽然这样做更好,但它并不能防止人在中间发作。请记住,www不是SSL安全的,我认为你不能完全阻止它,所以接下来最好的事情是在哈希中加入一个时间戳,使其有效5分钟。

有没有人对我如何做得更好有任何想法,或指出这种做法有任何陷阱?我将非常感激。

1 个答案:

答案 0 :(得分:1)

您可以在两个域之间拥有共享密钥,并使用对称加密算法来加密cookie值,或者在不安全域中设置公钥/私钥,并使安全域使用公钥来加密cookie不安全的域名。

另外,请记住,加密登录过程但之后通过不安全的渠道传输会话cookie可能允许攻击者冒充您的用户(有关详细信息,请参阅firesheep Firefox扩展程序)。