我想知道密钥的名称在安全方面是否重要。一个独特的名称会比一般名称更安全吗?
如果我存储了用户的电子邮件
$_SESSION['email']
如果$_SESSION['em_10lettersID']
等每个用户都是唯一的,那会更好吗?也许将电子邮件存储在会话中甚至不安全。
答案 0 :(得分:2)
让我们澄清任何误解。
会话是服务器端存储。没有比这更好的了。通过在包含唯一令牌的设备上存储 cookie ,此存储与设备(“用户”,如果愿意)相关联。每个请求,设备都会将此cookie(以及令牌)发送到服务器。然后,服务器识别该令牌并检查该令牌是否存在现有的会话。它从存储加载会话(默认情况下,此存储是一个文件),其内容存储在$_SESSION
变量中。
默认情况下, cookie 的名称为PHPSESSID,令牌是随机生成的哈希。您可以在“资源”标签下的Chrome开发者控制台中检查此Cookie。
现在,由于会话及其包含的内容从未向用户公开(请记住:它在服务器上持久存储),因此存储在其中的内容并不重要;客户无法知道。
此规则的例外情况是客户端获得对您服务器的访问权限。但是,在这种情况下,您需要担心更大的问题。
还需要注意的一点是$_SESSION
每个客户/用户都是唯一的,它们不会相互影响$_SESSION
。
请注意,这种解释有所简化。
现在你不应该做的是将敏感信息存储在 cookies ($_COOKIE
)中。它们保存在客户端/用户上!
答案 1 :(得分:0)
通常,在会话中存储电子邮件地址或任何其他敏感信息并不是一个好主意。最好存储一个用户令牌(类似于MD5哈希或AES加密的秘密字符串),可以在数据库中查找(或在Web根目录之外的平面文件中查找 - 公共www用户无论如何都无法访问)。然后,您的数据库或数据存储区可以使用该密钥来检索进入代码所需的值。
希望有所帮助。