我们正在对各种 Drupal 模块运行 Fortify 扫描,常见的严重/高结果是“不安全的随机性”。它指出 rand() 函数无法承受加密攻击。
我的问题是——这是一个严重的问题吗?如何在 PHP 中修复它?
谢谢。
这个问题的答案完全取决于您使用 rand() 调用的结果来做什么。
如果您将它们用于加密密钥之类的用途,其中该工具的安全性取决于随机数的随机性,那么,是的,这是一个严重的问题。在这种情况下,您不应调用 rand() 或 mt_rand(),因为两者都不会产生足够随机的“随机”数字以供加密使用。您确实想利用正在运行的平台的底层伪随机数生成器 (PRNG) - Unix/Linux 系统上的 /dev/urandom 或 Windows 系统上的 crypto-api - 因为这些已经被广泛研究并产生适合在密码系统中使用的真正随机数。 PHP 并没有让访问这些随机源变得那么容易,但是确实存在如何做到这一点的示例(就像这样 ->http://www.php.net/manual/en/function.mt-rand.php#83655 http://www.php.net/manual/en/function.mt-rand.php#83655).
如果您将随机数用于其他用途,例如随机化首先向用户呈现哪个选项,或类似的操作,其中生成的数字不以任何加密方式使用,那么您may能够摆脱使用 rand() 或 mt_rand() 的影响。但是,如果您的应用程序/模块依赖良好的随机数来保证安全性,那么您确实需要利用操作系统源,如上所述。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)