3

我在我的网站的登录工作流程中使用 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 技术。我只是喜欢易于访问和管理的会话变量的想法。

4

4 回答 4

7

会话数据存储在服务器端。

Cookie 数据存储在客户端。

于 2013-06-29T13:55:38.683 回答
2

我更喜欢通过生成一个 guid 函数来做随机的东西,因为它会生成一个唯一的标识符并且比简单的随机更安全:

# assume that $rand_string is not null and a string
session_start();
$_SESSION['secret'] = com_create_guid();

是的,$_SESSION变量存储在服务器端。

于 2013-06-29T14:00:01.617 回答
1

是的,你是对的,用户只知道会话 ID 或类似的东西,只是识别用户对应的会话的东西。

其余数据暂时存储在服务器上。

除非您的网站上存在我认为您没有的重大错误,否则访问者无法获得会话数据。

于 2013-06-29T13:58:35.693 回答
1

你说的是对的。里面的所有数据$_SESSION只能在服务器上访问,但前提是会话没有超时。

尽管如此,您应该小心,存储在 cookie 中的会话 ID 很容易被捕获。有关详细信息,请参阅会话和安全性。

于 2013-06-29T14:03:07.503 回答