散列会话指纹真的有必要吗?

2022-08-30 14:02:08

请在投票前仔细阅读...

因此,我见过很多会话管理类,这些类通过连接用户代理和几个ip块或其他任何东西来创建指纹。他们似乎还添加了一个盐,然后在将其存储在会话变量中之前对该指纹进行哈希处理。

这种指纹生成通常发生在每个请求中,以验证会话的当前用户是否与原始会话用户一致。这就是为什么我想知道,在这样的事情上,哈希真的有必要吗?

如果黑客可以进入您的文件系统以查看您的会话文件内容,那么您不是已经在那个时候被吊死了吗?

任何信息都非常感谢。


答案 1

其中大部分都是有道理的,但散列和腌制毫无意义。

如果将会话绑定到 IP 地址,则劫持到会话中将变得更加困难。这是我建议做的事情,但你不需要对它完全严格。您可以只绑定到IPv4的前三个部分左右。选择权在您手中。IP检查越严格,安全性越高,但对用户来说就越不方便。

至于基于用户代理绑定会话,这可能也会有所帮助。必须意识到,如果您在未加密的通道(例如HTTP)上工作,那么用户代理检查就不太有用了,因为它也可以由入侵者复制。

当涉及到腌制和散列时,这是没有用的。它们不会为您的身份检查增加任何力量。他们唯一要做的就是让你的设计复杂化。就此而言,我相信他们降低了您的安全级别。

与往常一样,请记住一些规则:

  • 使用强会话标识符。这意味着使用良好的随机源并确保有足够的位。
  • 至少在某种程度上将会话绑定到 IP。
  • 如果可能,将会话绑定到用户代理。
  • 使用 SSL/TLS。没有它,理论上所有会话系统都是不安全的。
  • 保护您的会话存储。无论是基于文件系统还是基于数据库。

答案 2

我可以想到两种有用的情况:

  1. 当会话数据存储在客户端时。(就像在饼干中一样。因此,我会被阻止将我的cookie带到另一台计算机,并且将阻止我制作自己的cookie内容。(好吧,所以这不是一个非常可能的情况...)
  2. 当会话数据存储在某个共享的服务器端资源(即 /tmp)中并且容易受到窥探时。在这种情况下,如果窥探者能够看到会话的内容,他们仍然无法伪造与该会话的连接,因为他们不知道哪些数据进入了指纹。

推荐