Как реализовать Политику Безопасности Содержимого с 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}");