【发布时间】:2012-04-30 06:18:47
【问题描述】:
我们在各种 Drupal 模块上运行 Fortify 扫描,常见的严重/高结果是“不安全随机性”。它指出 rand() 函数无法承受加密攻击。
我的问题 - 这是一个严重的问题吗?如何在 PHP 中修复它?
谢谢。
【问题讨论】:
我们在各种 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)。
如果您将随机数用于其他用途,例如随机化哪个选项首先呈现给用户,或者类似的事情,其中生成的数字没有以任何加密方式使用,那么您可以 能够摆脱使用 rand() 或 mt_rand()。但是,如果您的应用程序/模块依赖于良好的随机数来保证其安全性,那么您确实需要利用操作系统源,如上所述。
【讨论】:
【讨论】: