Как установить CSP (Content-Security-Policy) в .htaccess
Если я установлю CSP, мой веб-сайт не загрузится. Я пытаюсь избежать unsafe-inline/-eval. Я использую следующую файловую структуру
- .htaccess
- index.php
- разметка.html
- скрипты/main.js
- скрипты/jquery.js
- стили/style.css
- и некоторые другие изображения и текстовые файлы для контента
Я получаю просто белую страницу, однако, если я открываю исходный код в браузере, он загружается, но некоторые его части пропускаются.
<IfModule mod_headers.c>
Header set X-XSS-Protection "1; mode=block"
Header set X-Frame-Options "SAMEORIGIN"
Header set X-Content-Type-Options "nosniff"
Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains"
# Header set Content-Security-Policy "default-src 'self' data:; style-src 'self'; script-src 'self' 'nonce-%{UNIQUE_ID}e' /scripts; frame-src https:;"
Header set Referrer-Policy "same-origin"
Header set Feature-Policy "geolocation 'self'; vibrate 'none'"
</IfModule>
Я пытался использовать разные коды в .htaccess, например:
Header set Content-Security-Policy "default-src 'self' data:; style-src 'self'; script-src 'self' '/scripts/main.js' '/scripts/jquery.js'; frame-src https:;"
и
Header set Content-Security-Policy "default-src 'self' data:; style-src 'self'; script-src 'self' 'nonce-%{UNIQUE_ID}e' /scripts; frame-src https:;"
для второго кода, который я установил в HTML:
<script src="scripts/main.js" nonce="<random-nonce>"></script>
и в PHP
$html= file_get_contents("markup.html");
$html = str_replace("<random-nonce>", $_SERVER['UNIQUE_ID'], $html);
print $html;
Я пытаюсь уже 5 часов безуспешно: / Это работает, только если я закомментирую CSP в .htaccess с помощью #, конечно, тогда без CSP!