如何在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}");