【问题标题】:How to implement Content Security Policy with WordPress Nonces in PHP using PHP header-method?如何使用 PHP 标头方法在 PHP 中使用 WordPress Nonce 实现内容安全策略?
【发布时间】:2018-03-19 08:57:38
【问题描述】:

目前我正在尝试在 WordPress 登录页面上实施内容安全策略。我在 PHP 中使用以下标头方法来实现内容安全策略:

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>

当我使用“435234JHHJK2”之类的字符串指定随机数时,此示例有效,但是当我尝试将变量放入标题中时:

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

由 wp-nonce 创建的随机 nonce 无法识别,并且给定的脚本不会被执行。

那我做错了什么?

【问题讨论】:

    标签: javascript php wordpress content-security-policy nonce


    【解决方案1】:

    找到解决方案:

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

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

    并将此变量包含在 PHP 标头方法中:

    header( "{$csp}");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-11
      • 2021-12-24
      • 1970-01-01
      • 1970-01-01
      • 2021-07-29
      • 2016-03-11
      相关资源
      最近更新 更多