我正在使用PHP $ _SESSION变量和我网站的登录工作流程,我只想做一些澄清。就像Facebook一样,我想存储一个只有服务器知道的密码,用于签署发送到服务器和从服务器发送的每个请求。我最初的方法是生成一个随机字符串并将其存储在MySQL表中,但后来我了解了会话变量。我知道会话变量默认使用存储会话名称和ID的cookie来工作,对吗?没有任何实际数据存储在用户的计算机上?所以如果我想实现:
# assume that $rand_string is not null and a string
session_start();
$_SESSION['secret'] = $rand_string;
用户无法解码会话cookie并确定$rand_string
的实际值,对吗?只是想确保数据是安全的,否则我将恢复到不太流畅的MySQL技术。我只是想到了易于访问和管理的会话变量。
答案 0 :(得分:7)
会话数据存储在服务器端。
Cookie数据存储在客户端。
答案 1 :(得分:2)
我更喜欢通过生成guid`函数来做随机的事情,因为它会生成一个唯一的标识符,并且比简单随机更安全:
# assume that $rand_string is not null and a string
session_start();
$_SESSION['secret'] = com_create_guid();
是的, $ _ SESSION 变量存储在服务器端。
答案 2 :(得分:1)
是的,您是对的,用户只知道会话ID或类似内容,只需识别用户对应的会话。
其余数据暂时存储在服务器上。
访问者无法获得会话数据,除非您的网站上存在重大错误,我认为您不会这样做。
答案 3 :(得分:1)
你说的是对的。 $_SESSION
中的所有数据只能在服务器上访问,但只有在会话没有超时的情况下才能访问。
尽管如此,您应该小心,可以非常轻松地捕获存储在cookie中的会话ID。有关详细信息,请参阅Sessions and Security。