请仔细阅读以下内容后再投票……
我看到许多会话管理类通过用户代理和一些IP块进行连接来创建指纹。他们似乎还会添加一个盐并在将其存储在会话变量中之前对该指纹进行哈希处理。
为了验证当前会话用户是否确实是原始会话用户,这种指纹生成通常会在每个请求中发生。因此,我想知道,像这样的盐和哈希真的必要吗?
如果黑客可以进入您的文件系统以查看会话文件内容,那么此时您不是已经遭受了攻击吗?
非常感谢任何信息提供。
请仔细阅读以下内容后再投票……
我看到许多会话管理类通过用户代理和一些IP块进行连接来创建指纹。他们似乎还会添加一个盐并在将其存储在会话变量中之前对该指纹进行哈希处理。
为了验证当前会话用户是否确实是原始会话用户,这种指纹生成通常会在每个请求中发生。因此,我想知道,像这样的盐和哈希真的必要吗?
如果黑客可以进入您的文件系统以查看会话文件内容,那么此时您不是已经遭受了攻击吗?
非常感谢任何信息提供。
大部分内容都很合理,但是哈希和加盐一点也不合理。
如果将会话与IP地址绑定,则更难劫持会话。我建议这样做,但您无需完全严格执行此操作。您可以仅绑定到IPv4的前三个部分左右。选择权在于您。 IP检查越严格,安全性越高,但对用户来说越不方便。
至于基于用户代理绑定会话,那也可能有所帮助。必须意识到,如果您使用未加密通道(例如HTTP),则用户代理检查的用处就较小,因为黑客也可以复制它。
当涉及加盐和哈希时,这是无用的。它们对身份验证检查没有增强作用。它们唯一做的是使设计变得复杂。对此我认为它们降低了安全级别。
像往常一样,请记住以下几个规则:
session.save_path
和open_basedir
是一个非常好的主意(并为每个应用程序获取单独的虚拟主机)。很少这么做。我可以想象哈希指纹信息的目的是为了节省存储空间,因为生成的哈希值具有固定长度。
但同时使用盐并没有太多意义。因为正如你已经说过的那样,由于这些数据存储在会话数据存储位置中,如果有人能够获取这些数据,你已经面临比会话固定/劫持更大的问题了。
您可以在这里找到一个可行的解决方案: http://shiflett.org/articles/the-truth-about-sessions
指纹识别可以防止会话劫持。
攻击者不仅需要您的session_id
,还需要任何敏感的HTTP头。
它为攻击者增加了另一个障碍,尽管这个障碍很容易被克服。
哈希函数用于使数据统一。盐值用于混淆哈希过程,以便攻击者无法为自己的HTTP头组合生成有效的指纹。
如果黑客进入了您的文件系统,那么您就有更大的问题:D
12345
的例子,并称其为“安全深度浅”。猜测用户代理甚至比猜测一个 5 位数字更容易! - tc.session_id
存储在 $COOKIE 中,指纹存储在会话中(因此存储在服务器上)。 - Halcyon<img>
,等待您登录,现在知道受害者的会话 ID)。没有什么理由保留跨登录的会话,您可以复制需要保留的少数内容(例如购物车)。