Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 用来记录用户的cookie应该由什么组成?_Php_Security_Cookies - Fatal编程技术网

Php 用来记录用户的cookie应该由什么组成?

Php 用来记录用户的cookie应该由什么组成?,php,security,cookies,Php,Security,Cookies,我试图遵循这条规则:当用户更改密码时,他应该注销所有设备 那就意味着我必须把他的密码和cookie混在一起?好的,这是我的代码: $hash = hash('sha512', $id.$email.$password); $db->query("update users set cookie ='$hash' where email = '$email'"); setcookie("login", $hash, time() + (20 ^ 20), "/"); 好的,我所做的是正确的吗

我试图遵循这条规则:当用户更改密码时,他应该注销所有设备

那就意味着我必须把他的密码和cookie混在一起?好的,这是我的代码:

$hash = hash('sha512', $id.$email.$password);
$db->query("update users set cookie ='$hash' where email = '$email'");
setcookie("login", $hash, time() + (20 ^ 20), "/");
好的,我所做的是正确的吗?实际上我问这个是因为我在某个地方读到:

永远不要将密码放入cookie


若我想遵循上面的句子,那个么我的规则就行不通了。事实上,我需要一个基于密码的cookie,当用户更改密码时会导致注销。

这就是会话的用途。事实上,它们是cookie,但cookie中只保存了一个浏览器id。服务器得到一个表,其中包含每个用户id的会话。但是攻击者仍然可以复制该id,但他无法访问存储在服务器上的会话内容

<?php session_start; $_SESSION["pass"]="test";?>

好的,你的散列也是一样。攻击者可以复制保存的id。使用代币。
当用户登录时,随机令牌被添加到数据库并存储到会话中。如果你想踢出所有用户,只需删除这些令牌。为了获得额外的安全性,有时交换令牌。这使得攻击者更难操作,因为令牌只能工作几分钟。

请告诉我为什么?因为您没有使用
random\u bytes()
生成令牌,我打赌。@ScottArciszewski我为什么要使用
random\u bytes()