如何在PHP中使用PHP标题方法实现WordPress内容安全策略?

问题描述:

目前我正试图在WordPress着陆页上实施内容安全政策。我使用下面的头法在PHP来实现内容安全策略:如何在PHP中使用PHP标题方法实现WordPress内容安全策略?

header("Content-Security-Policy:default-src 'none'; script-src 'nonce-RandomSeq' 'nonce-hzthedtrh5' 'nonce-hjjftzrf56zf' ... ") 

而且我尝试使用WordPress Nonce为一个内嵌Javascript代码

<?php 
$nonce = wp_create_nonce('my-nonce'); ?> 

<script type="text/javascript" nonce="<?php echo $nonce; ?>"> 
    // some javascript code 
</script> 

这个例子工程创建随机的随机数当我specifiy的随机数中包含“435234JHHJK2”的字符串,但是当我试图把一个变量,像这样的标题:

header("Content-Security-Policy:default-src 'none'; script-src 'nonce-".$nonce."' 'nonce-hzthedtrh5' 'nonce-hjjftzrf56zf' ... ") 

的随机数,创建通过wp-nonce不被识别,给定的脚本不会被执行。

那么我做错了什么?

找到了解决办法:

PHP不接受单引号变量liike在'noce-".$nonce."' 解决方案是将整个的CSP信息保存在外部字符串变量:

$csp = "Content-Security-Policy: script-src 'nonce-".$nonce1."' 'nonce-".$nonce2."'..."; 

,并纳入本变量进入PHP头部方法:

header("{$csp}");