高php session.sid_bits_per_character和session.sid_length的优缺点?

问题描述 投票:0回答:1

如标题所问,

高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匹配来说也更长(具有唯一的键列约束?但作为键列,应该不重要吧?)
  • 生成时间更长?也许吧,但可能影响很大??
  • 较长的长度使用更多的资源,但是位大小会使用更多的资源吗?长度和/或位的增加是否更加明显?

有什么理由不将 php.ini 文件中的这 2 个设置更改为以下内容吗?

sid_bits_per_character = 6
sid_length = 256

编辑:添加了使用更多资源的可能缺点

php security
1个回答
0
投票

婴儿猝死综合症是短暂的而不是永久的。因此,您需要存储的数量与您拥有的活跃用户数量成正比,而不是与总用户数量成正比。当您使用 RDBMS 进行会话存储时,这很好:在大型表中,随机主键效率不高,但会话表(使用 sids 作为主键)并没有那么大。

短暂性还意味着您可以在将来更改 sid 格式,唯一的运营成本是在切换时取消所有活动会话。如果您宣布预定的停机时间,您可以偶尔摆脱这种情况。

更长的 sids 更安全。将 6 位添加到随机 sid 会使猜测难度增加 64 倍。 120 位 sid(20 个字节,每个字节 6 位)就可以了,不会引起支付卡行业信息安全审计员等人员的注意。长一点也OK。几个字节长的 cookie 值的额外成本、CPU、存储和网络成本太小,无法衡量。

避免使用 MD5 或 SHA-1 哈希算法。使用 SHA-224 或至少同样安全的东西。审计员不喜欢安全性较差的。使用更好的方法可以让您省去向审核员解释为什么更差的方法对于短暂的短暂值来说仍然可以接受的麻烦。

当您的站点增长到足以满足您的需要时:当您需要多个负载平衡的 Web 服务器计算机时,php 中的会话子系统允许您从文件系统会话存储切换到 RDBMS 或缓存服务器存储。您不必从第一天开始就过度设计应用程序的这一部分。

© www.soinside.com 2019 - 2024. All rights reserved.