我正在尝试开发一个可以使用cookie启动安全登录的PHP登录脚本。我知道你可以用电脑做很多事情,我要求社区提供有关cookie安全性的信息。我最大的问题:有人可以创建cookie欺骗帐户并访问网站而无需登录吗?那么检查这个用户是否合法的最安全方法是什么?
答案 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散列。
因此,使用ID
和PUBLIC_KEY
我选择用户及其中的一些数据(如私钥),重新生成哈希值,并将其与USER_DATA_SESSION_HASH_VERIFIER
匹配。请记住,如果他们重新启动互联网连接,那么在散列中拥有当前的ip将使用动态ip注销用户,这将有一个新的IP地址。在哈希中混合用户代理将阻止其他用户在不同的浏览器上使用您的cookie。
现在,如果您正在寻找像facebook这样的用户的会话管理之类的东西,那么您可以在其中混合会话标识符,并将会话标识符与您在数据库中的该会话的唯一公钥一起存储。
离。 1: asdfg :uss32:sha1_hash 1:GGGAS: 2312 :sha1_hash。这样您就无法使用 asdfg 键进行会话 2312 。
可能还有其他更好的做法,但对我而言,这似乎是一个非常好的解决方案。