`$ _SESSION`中键的命名是否会影响安全性?

时间:2017-03-07 22:58:30

标签: php security session

我想知道密钥的名称在安全方面是否重要。一个独特的名称会比一般名称更安全吗?

如果我存储了用户的电子邮件 $_SESSION['email']如果$_SESSION['em_10lettersID']等每个用户都是唯一的,那会更好吗?也许将电子邮件存储在会话中甚至不安全。

2 个答案:

答案 0 :(得分:2)

让我们澄清任何误解。

会话是服务器端存储。没有比这更好的了。通过在包含唯一令牌的设备上存储 cookie ,此存储与设备(“用户”,如果愿意)相关联。每个请求,设备都会将此cookie(以及令牌)发送到服务器。然后,服务器识别该令牌并检查该令牌是否存在现有的会话。它从存储加载会话(默认情况下,此存储是一个文件),其内容存储在$_SESSION变量中。

默认情况下, cookie 的名称为PHPSESSID,令牌是随机生成的哈希。您可以在“资源”标签下的Chrome开发者控制台中检查此Cookie。

现在,由于会话及其包含的内容从未向用户公开(请记住:它在服务器上持久存储),因此存储在其中的内容并不重要;客户无法知道。

此规则的例外情况是客户端获得对您服务器的访问权限。但是,在这种情况下,您需要担心更大的问题。

还需要注意的一点是$_SESSION每个客户/用户都是唯一的,它们不会相互影响$_SESSION

请注意,这种解释有所简化。

现在你不应该做的是将敏感信息存储在 cookies $_COOKIE)中。它们保存在客户端/用户上!

答案 1 :(得分:0)

  • 您说的是会话变量的名称,而不是会话
  • 不,没关系。任何人都可以打开浏览器并检查调试器中的资源,并查看cookie中存储的内容。如果存储的值是“joe@example.com”,无论您将其称为“asdfkjh234690hj”还是“email”都无关紧要。

通常,在会话中存储电子邮件地址或任何其他敏感信息并不是一个好主意。最好存储一个用户令牌(类似于MD5哈希或AES加密的秘密字符串),可以在数据库中查找(或在Web根目录之外的平面文件中查找 - 公共www用户无论如何都无法访问)。然后,您的数据库或数据存储区可以使用该密钥来检索进入代码所需的值。

希望有所帮助。