我使用PHP为站点上的内容安全策略生成随机数(唯一键)。我们的想法是在第一次请求时生成随机数,然后每次返回该随机数(在单个HTTP请求中)。这是我使用的代码
class Csp {
private static $nonce = NULL;
public static function nonce () {
if (!isset(self::$nonce)) {
self::$nonce = bin2hex(openssl_random_pseudo_bytes(15));
}
return self::$nonce;
}
}
被
调用\namespace\Csp::nonce();
每个请求都会多次调用该函数,有时会返回不同的值。例如,在发送HTTP标头和生成页面主体内容时调用该函数,有时(可能经常超过20次中的1次),在HTTP标头和主体中发送不同的值。响应,触发内容安全策略(发生了很糟糕的事情)。
此外,可能无关,当我尝试使用static::
而不是self::
时,我无法设置变量。我无法找到相关文档,所以我不确定它是否是一个功能。
我在Apache 2.4.10上使用PHP 5.6.9,在Debian上运行。