3

我们在各种 Drupal 模块上运行 Fortify 扫描,常见的严重/高结果是“不安全随机性”。它指出 rand() 函数无法承受加密攻击。

我的问题 - 这是一个严重的问题吗?如何在 PHP 中修复它?

谢谢你。

4

2 回答 2

2

这个问题的答案完全取决于您使用 rand() 调用的结果。

如果您将它们用于加密密钥之类的东西,其中工具的安全性取决于您的随机数的随机性,那么,是的,这是一个严重的问题。在这种情况下,您不应该调用 rand() 或 mt_rand(),因为两者都不会产生足够随机的“随机”数字来进行加密使用。你真的想利用你正在运行的平台的底层伪随机数生成器 (PRNG) - Unix/Linux 系统上的 /dev/urandom 或 Windows 系统上的 crypto-api - 因为这些已经被广泛研究并产生适用于密码系统的真正随机数。PHP 并没有使访问这些随机源变得那么容易,但是确实存在如何做到这一点的示例(例如 -> http://www.php.net/manual/en/function.mt-rand。

如果您将随机数用于其他用途,例如随机化哪个选项首先呈现给用户,或者类似的东西,其中产生的数字没有以任何加密方式使用,那么您可能能够逃脱使用rand() 或 mt_rand()。但是,如果您的应用程序/模块依赖于良好的随机数来保证其安全性,那么您确实需要利用操作系统源,如上所述。

于 2012-04-18T19:27:23.523 回答
1

mt_rand?

于 2012-04-18T19:06:45.187 回答