提问人:Ranald Fong 提问时间:9/10/2023 最后编辑:Ranald Fong 更新时间:9/10/2023 访问量:90
高PHP session.sid_bits_per_character和session.sid_length的优缺点?[关闭]
pros and cons of high php session.sid_bits_per_character and session.sid_length? [closed]
问:
正如标题所问的,
高php session.sid_bits_per_character和session.sid_length的优缺点是什么? 显而易见的优点是,更高的位和长度意味着更难暴力破解或重叠,但除了模糊的兼容性问题之外,还有很多或任何缺点吗?
我问这个问题,因为这是手册提供的信息。https://www.php.net/manual/en/session.configuration.php#ini.session.hash-function
我可以想象可能的缺点,但这些最多是愚蠢的猜测。
- 更长的长度意味着更大的 cookie 和更长的处理时间,对于 RDBS id 匹配来说也更长(具有唯一的键列约束?但作为关键列,应该不重要吧?
- 生成时间更长?也许,但可能是有影响力的??
- 长度越长,使用资源越多,但位大小会占用更多资源吗?对于长度和/或位的增加,它是否明显更多。
有什么理由不将这 2 个设置更改为 php.ini 文件中的以下内容吗?
sid_bits_per_character = 6
sid_length = 256
编辑:添加了使用更多资源的可能缺点
答:
婴儿猝死综合症是短暂的,而不是永久性的。因此,您需要存储的数量与您拥有的活跃用户数量成正比,而不是总用户数。当您使用 RDBMS 进行会话存储时,这很好:在大型表中,随机主键不是很有效,但会话表(主键为 sid)就没有那么大了。
短暂性还意味着您将来可以更改 sid 格式,唯一的运营成本是在切换时取消所有活动会话。如果您宣布计划的停机时间,您可以偶尔摆脱这种情况。
SID 越长越安全。将 6 位添加到随机 sid 中会使猜测难度增加 64 倍。192 位 sid(32 字节,每字节 6 位)就好了,不会引起支付卡行业信息安全审计员等人员的注意。更长也可以,但 256 字节是矫枉过正。几个字节长的 cookie 值的额外成本、CPU、存储和带宽太小,无法衡量。通过更有效地压缩图像等操作,您可以节省数千倍的服务器和带宽资源。比从sids中削减字节的回报要大得多。
避免使用 MD5 或 SHA-1 哈希算法。使用 SHA-224 或至少同样安全的东西。审计师不喜欢安全性较低的那些。使用更好的值可以省去向审计员解释较差的值对于短暂的短暂值如何仍然可以的麻烦。
php 中的会话子系统允许您在站点流量增长到需要它时从文件系统会话存储切换到 RDBMS 或缓存服务器存储:当您需要多个负载平衡的 Web 服务器计算机时。您不必从第一天起就对应用程序的这一部分进行过度设计。只需正确地进行会话变量开发,就可以为未来做好准备。
评论