2017-03-07 90 views
0

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

如果我将用户的电子邮件存储在 $_SESSION['email']如果它是像$_SESSION['em_10lettersID']这样的唯一用户,会更好吗?尽管如此,将电子邮件存储在一个会话中可能并不安全。

回答

0
  • 你所谈论的会话变量,而不是会议的名称。
  • 不,没关系。任何人都可以打开浏览器并查看调试器中的资源,并查看cookie中存储的内容。如果存储的值是“[email protected]”,无论您称之为“asdfkjh234690hj”还是“电子邮件”都无关紧要。

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

希望有所帮助。

+2

*“一般来说,将电子邮件地址或任何其他敏感信息存储在会话中不是一个好主意。”*您的意思是Cookie? – ficuscr

+0

是的,饼干也是。但是OP没有询问cookies。 – TinkerTenorSoftwareGuy

2

让我们澄清任何误解。

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

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

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

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

还有一点要注意的是,$_SESSION是每个客户端/用户唯一的,他们不能影响对方的$_SESSION

请注意这个解释有些简化。

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

相关问题