真的需要哈希会话指纹吗?

dqh*_*cks 31 php security session fingerprint

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

所以我看到很多会话管理类通过串联用户代理和几个ip块或其他来创建指纹.他们似乎还添加了一个盐,然后在将指纹存储在会话变量中之前对其进行哈希处理.

这种指纹生成通常发生在每个请求中,以便验证会话的当前用户是否与原始会话用户相关.这就是为什么我想知道,散列真的是必要的吗?

如果黑客可以访问您的文件系统以查看您的会话文件内容,那么您是否已经在这个时候已经进行了管理?

任何信息非常感谢.

Tow*_*wer 10

大部分都是有道理的,但散列和盐渍是没有意义的.

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

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

在盐渍和散列方面,这是没用的.他们没有增加你的身份检查的力量.他们唯一做的就是让你的设计复杂化.对于这件事,我认为它们会降低您的安全级别.

一如既往,要记住一些规则:

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