繁体   English   中英

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

[英]Does the naming of keys in `$_SESSION` affect security?

我想知道密钥的名称是否对安全性很重要。 唯一名称会比通用名称更安全吗?

如果我将用户的电子邮件存储在$_SESSION['email'] ,则最好像$_SESSION['em_10lettersID']这样对每个用户都是唯一的。 通常,将电子邮件存储在会话中甚至可能并不安全。

让我们清除任何误解。

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

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

现在,由于该会话及其包含的任何内容都永远不会暴露给用户(请记住:该会话保留在服务器上 ),因此存储在其中的内容无关紧要; 客户不知道。

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

还有一点要注意的是, $_SESSION对于每个客户端/用户都是唯一的,并且它们不能影响彼此的$_SESSION

请注意,此解释有些简化。

现在,您永远都不要将敏感信息存储在cookie$_COOKIE )中。 它们已保存在客户端/用户上!

  • 您正在谈论的是会话变量的名称,而不是会话
  • 不,没关系。 任何人都可以打开其浏览器,并在调试器中检查资源,并查看Cookie中存储了什么。 所存储的值为“ joe@example.com”,无论您称其为“ asdfkjh234690hj”还是“电子邮件”都无关紧要。

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

希望能有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM