有谁知道的工作原理PHPSESSID
?它是如何工作的以及保存在哪里?它是保存在客户端还是服务器端,如果他知道我的,另一台 PC 是否能够从他的 PC 连接到我的帐户PHPSESSID
?
2 回答
是的,这就是为什么最好不要通过 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所指出的那样,总有一种方法可以被劫持。你所能做的就是让它变得更难。
会话数据以会话 ID 作为标识保存在服务器端的文件系统中。实际位置会有所不同,您可以通过session.save_path
ini 设置进行更改。您也可以更改PHPSESSID
名称,但这将作为 cookie 提供给客户端并引用会话文件。在我的系统上
/var/lib/php5/sess_53jsd3icrkbqbbfrl6qlv6e6a7
浏览时我有 PHPSESSID cookie 53jsd3icrkbqbbfrl6qlv6e6a7
。
由于这用于识别会话,因此如果暴露它会带来安全风险,所以是的,如果用户知道会话 ID,他们可以窃取您的会话。这称为会话劫持。请注意,即使session.use_cookies = 1
是不够的,因为如果他们知道,没有什么可以阻止某人设置该 cookie。使用 https 加密 cookie 是我所知道的唯一有效的解决方案。