保护自定义处理程序中的PHP会话ID

时间:2012-09-25 12:31:01

标签: php security session

我编写了一个简单的自定义会话处理程序(在MySQL中,但这不相关),它只是将序列化的会话数据,会话ID和当前时间保存到表中。

会话存在时,会话ID与攻击者的密码一样有价值,这让我相信我应该以某种方式加密它。

是否值得在将会话ID存储到数据库之前对其进行哈希处理,以便强制攻击者强制使用会话ID来伪造cookie?

我的网站已经为所有连接使用HTTPS。

1 个答案:

答案 0 :(得分:0)

因此,您试图阻止的是,如果攻击者从您的数据库访问会话ID转储,他可以冒充任意用户,因为他可以按原样使用会话ID。为此,以与散列密码相同的方式散列id实际上是个好主意,因此单向查找是可能的,但散列值本身已变得无用。由于会话ID通常也会很快过期,因此在强制执行方面几乎没有用处。

另一方面,由于会话ID通常很快到期,因此开始时可能没有太多意义。对于攻击者来说,机会之窗非常小。事实上,攻击者能够从您的数据库中获取会话ID转储的重量更重,并且是一个更糟糕的漏洞,因为这意味着攻击者可能已经可以访问其他数据。

它仍然是一个有价值的防御,几乎没有缺点(计算开销很小,会话ID的调试稍微复杂一些)。