Нужно ли с Nginx добавлять политику безопасности содержимого в каждый блок местоположения?

Environment: Nginx, Node.js,Digital Ocean Droplet

В документации для директивы add_header указано, что ее можно использовать в контексте http , server или location .

Однако, когда я добавляю свою политику безопасности контента в контекст http или сервера , он не обнаруживается, когда я тестирую его в https://csp-evaluator.withgoogle.com/ или https://securityheaders.com/ .
Когда я добавляю его в блок местоположения , оба сайта его обнаруживают.

Пример заголовка:

add_header content-security-policy "default-src 'self';"

Мой nginx.conf имеет 5 блоков location , один используется в качестве прокси. Нужно ли мне добавлять content-security-policy к каждому блоку или есть способ лучше?

location ~* \.(jpg|png|svg|webp|ico)$ { }
location ~* \.(css)$ { }
location ~* \.(htm|html)$ { }
location ~* \.(js)$ { }
location / {
    proxy_pass http://127.0.0.1:9999;
}

Также мне нужно добавлять все остальные мои основные заголовки безопасности в каждый блок? Это кажется избыточным, но если это единственный способ защитить сайт, я сделаю это.

0
задан 5 December 2020 в 23:54
1 ответ

Директива add_header имеет интересное свойство. Из документации:

Может быть несколько директив add_header. Эти директивы наследуются от предыдущего уровня конфигурации тогда и только тогда, когда на текущем уровне не определены директивы add_header.

Это означает, что если вы добавляете другие заголовки в один из этих блоков location, то любые директивы add_header с сервера или Блоки http необходимо будет повторить.

Рассмотрите возможность использования файлов included для организации подобных директив, которые вам, возможно, придется повторить.

2
ответ дан 6 December 2020 в 01:27

Теги

Похожие вопросы