针对黑客的Cookie的完整性

时间:2015-11-10 14:01:57

标签: php security cookies accounts

我正在尝试开发一个可以使用cookie启动安全登录的PHP登录脚本。我知道你可以用电脑做很多事情,我要求社区提供有关cookie安全性的信息。我最大的问题:有人可以创建cookie欺骗帐户并访问网站而无需登录吗?那么检查这个用户是否合法的最安全方法是什么?

2 个答案:

答案 0 :(得分:1)

Cookie是浏览器存储的,所以是的,他们可以创建Cookie。您通常采取的措施是为user id设置一个cookie,为session hash设置一个cookie(您在用户登录时随机生成的内容)并检查会话IP。

答案 1 :(得分:0)

在我看来,使用cookie over session更安全,因为在其基本会话中,标识符也存储在cookie或http请求中,这些请求更容易发生会话劫持。我通常这样做的方式,取决于要求,是我在一个cookie中存储所有用户标识符。类似于:ID:PUBLIC_KEY:USER_DATA_SESSION_HASH_VERIFIER。其中:

ID是用户ID。

PUBLIC_KEY是存储在数据库中的随机字符串,如果您在每次登录时重新生成它,可以进一步加以保护,同时请记住它将取消验证来自其他设备,浏览器的所有登录。所以基本上你一次只能从一个地方登录。

USER_DATA_SESSION_HASH_VERIFIER是一个由用户ID,用户代理,当前IP地址,公钥,私钥组成的哈希,用盐(令牌)混合,多次混合md5和sha1与最终sha1或sha256散列。

因此,使用IDPUBLIC_KEY我选择用户及其中的一些数据(如私钥),重新生成哈希值,并将其与USER_DATA_SESSION_HASH_VERIFIER匹配。请记住,如果他们重新启动互联网连接,那么在散列中拥有当前的ip将使用动态ip注销用户,这将有一个新的IP地址。在哈希中混合用户代理将阻止其他用户在不同的浏览器上使用您的cookie。

现在,如果您正在寻找像facebook这样的用户的会话管理之类的东西,那么您可以在其中混合会话标识符,并将会话标识符与您在数据库中的该会话的唯一公钥一起存储。

离。 1: asdfg :uss32:sha1_hash 1:GGGAS: 2312 :sha1_hash。这样您就无法使用 asdfg 键进行会话 2312

可能还有其他更好的做法,但对我而言,这似乎是一个非常好的解决方案。