如何保存PHPSESSID?

时间:2013-04-06 15:11:21

标签: php

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

2 个答案:

答案 0 :(得分: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发送到恶意目的地,这是一个很好的最后机会降落伞。

正如爆炸药所指出的那样,无论如何总会有一种方法可以被甩掉。你所能做的就是让它变得更难。

答案 1 :(得分:1)

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

/var/lib/php5/sess_53jsd3icrkbqbbfrl6qlv6e6a7

浏览时,我有PHPSESSID Cookie 53jsd3icrkbqbbfrl6qlv6e6a7

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