显示无效的有效函数

问题描述

PHPstorm PHP 7.4 中,我正在使用下面的函数,它似乎可以正常运行,但我在第 551 行的控制台中收到以下 EA 错误

[EA] 生成的 IV 可能是假的,请添加必要的检查。

[EA] 使用第二个参数来确定所使用的算法是否具有加密强度。

  function _token()
    {
        $random_token = base64_encode(openssl_random_pseudo_bytes(32));
        return $_SESSION['token'] = $random_token;
    }

这是第 551 行

$random_token = base64_encode(openssl_random_pseudo_bytes(32));

这是红色突出显示

openssl_random_pseudo_bytes

解决方法

如果您阅读 openssl_random_pseudo_bytes() 的手册,您会看到有第二个参数用于确定生成的值是否“加密强”:

如果传递给函数,这将包含一个布尔值,用于确定所使用的算法是否“加密强”,例如,可以安全地与 GPG、密码等一起使用。如果是,则为 true,否则为 false

您需要传递此参数,然后检查是否为真(因此可以使用该值):

function _token()
{
    $random_token = base64_encode(openssl_random_pseudo_bytes(32,$strong));
    if (!$strong) {
        // deal with the token not being "cryptographically strong"
        throw new RuntimeException('Token is not cryptographically strong');
    }
    return $_SESSION['token'] = $random_token;
}

对我来说,PHPStorm 仍然显示该错误,但这就是它试图告诉您的。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...