Среда:Nginx, Node.js, Цифровая Океаническая Капля
Документы длядобавить_заголовокдиректива указывает, что ее можно использовать в контексте http
, server
или location
.
Однако, когда я добавляю свойполитика-безопасности-контентани к контексту http
, ни к server
контексту он не обнаруживается, когда я тестирую его вhttps://csp-evaluator.withgoogle.com/илиhttps://securityheaders.com/.
Когда я добавляю его в location
блок, оба сайта его обнаруживают.
Пример заголовка:
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;
}
Также мне нужно добавить все мои другие основные заголовки безопасности в каждый блок? Это кажется излишним, но если это единственный способ защитить сайт, я это сделаю.
решение1
Директива add_header
имеет интересное свойство. Издокументация:
Директив может быть несколько
add_header
. Эти директивы наследуются от предыдущего уровня конфигурации, если и только еслиadd_header
на текущем уровне не определены директивы.
Это означает, что если вы добавляетедругойзаголовки в одном из этих location
блоков, то любые add_header
директивы из блоков server
или http
необходимо будет повторить.
Рассмотрите возможность использования include
d-файлов для организации подобных директив, которые вам, возможно, придется повторять.