Com o Nginx, preciso adicionar uma política de segurança de conteúdo a cada bloco de localização?

Com o Nginx, preciso adicionar uma política de segurança de conteúdo a cada bloco de localização?

Ambiente:Nginx, Node.js, gota digital do oceano

Os documentos para oadd_headerdiretiva indica que ela pode ser usada em um contexto httpou .serverlocation

No entanto, quando eu adiciono meupolítica de segurança de conteúdopara o contexto httpou serverele não é detectado quando eu testo emhttps://csp-evaluator.withgoogle.com/ouhttps://securityheaders.com/.
Quando eu o adiciono a um locationbloco, ambos os sites o detectam.

Exemplo de cabeçalho:

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

O meu nginx.confpossui 5 locationblocos, sendo um deles usado como proxy. Preciso adicionar content-security-policya cada bloco ou existe uma maneira melhor?

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

Também preciso adicionar todos os meus outros cabeçalhos de segurança principais a cada bloco? Parece redundante, mas se essa for a única maneira de proteger o site, farei isso.

Responder1

A add_headerdirectiva tem uma propriedade interessante. Dedocumentação:

Poderia haver várias add_headerdiretivas. Estas diretivas são herdadas do nível de configuração anterior se e somente se não houver add_headerdiretivas definidas no nível atual.

Isso significa que se você estiver adicionandooutrocabeçalhos em um desses locationblocos, então quaisquer add_headerdiretivas dos blocos serverou httpprecisariam ser repetidas.

Considere usar includearquivos d para organizar diretivas como esta que você pode precisar repetir.

informação relacionada