1

有谁知道的工作原理PHPSESSID?它是如何工作的以及保存在哪里?它是保存在客户端还是服务器端,如果他知道我的,另一台 PC 是否能够从他的 PC 连接到我的帐户PHPSESSID

4

2 回答 2

3

是的,这就是为什么最好不要通过 url 传递会话 id,而是使用 cookie:

php.ini:session.use_cookies = 1

在这种情况下,服务器中有一个文件夹 (php.ini: session.save_path) 将存储文件,并且在您的硬盘驱动器中还有一个 cookie,用于将您的凭据映射到注册的 session_id。

php.ini:session.cookie_lifetime

设置此 cookie 的生存时间(0 表示无限),而

php.ini:session.gc_maxlifetime

定义它将在服务器上存在多长时间。

利用

php.ini:session.cookie_httponly = 1连同session.cookie_secure = 1(如果您使用的是 ssl)

改善对您的 cookie 信息的保护,使它们无法通过 javascript 访问,这是在 xss 攻击将您的 cookie 发送到恶意目的地时的最后机会降落伞。

正如Explosion Pill所指出的那样,总有一种方法可以被劫持。你所能做的就是让它变得更难。

于 2013-04-06T15:15:38.573 回答
2

会话数据以会话 ID 作为标识保存在服务器端的文件系统中。实际位置会有所不同,您可以通过session.save_pathini 设置进行更改。您也可以更改PHPSESSID名称,但这将作为 cookie 提供给客户端并引用会话文件。在我的系统上

/var/lib/php5/sess_53jsd3icrkbqbbfrl6qlv6e6a7

浏览时我有 PHPSESSID cookie 53jsd3icrkbqbbfrl6qlv6e6a7

由于这用于识别会话,因此如果暴露它会带来安全风险,所以是的,如果用户知道会话 ID,他们可以窃取您的会话。这称为会话劫持。请注意,即使session.use_cookies = 1是不够的,因为如果他们知道,没有什么可以阻止某人设置该 cookie。使用 https 加密 cookie 是我所知道的唯一有效的解决方案。

于 2013-04-06T15:18:10.410 回答