Как реализовать Политику Безопасности Содержимого с WordPress Nonces в PHP, используя PHP-метод заголовка?

В настоящее время я пытаюсь реализовать Политику безопасности контента на целевой странице 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, не распознается, и данный скрипт не будет выполнен.

Так что я делаю не так?

1 ответ

Решение

Нашел решение:

PHP не принимает переменные в одинарных кавычках 'noce-".$nonce."'Решение - сохранить всю информацию CSP во внешней строковой переменной:

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

и включить эту переменную в метод заголовка PHP:

header( "{$csp}");
Другие вопросы по тегам