Muss ich bei Nginx jedem Standortblock eine Inhaltssicherheitsrichtlinie hinzufügen?

Muss ich bei Nginx jedem Standortblock eine Inhaltssicherheitsrichtlinie hinzufügen?

Umfeld:Nginx, Node.js, Digital Ocean Droplet

Die Dokumente für dieKopfzeile hinzufügenhttp-Direktive gibt an, dass sie in einem , serveroder -Kontext verwendet werden kann location.

Wenn ich jedoch meineInhaltssicherheitsrichtlinieentweder die httpoder serverKontext wird es nicht erkannt, wenn ich es teste beihttps://csp-evaluator.withgoogle.com/oderhttps://securityheaders.com/.
Wenn ich es zu einem locationBlock hinzufüge, erkennen es beide Sites.

Beispielheader:

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

Meins nginx.confhat 5 locationBlöcke, einer wird als Proxy verwendet. Muss ich content-security-policyjedem Block etwas hinzufügen oder gibt es einen besseren Weg?

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

Muss ich auch alle meine anderen wichtigen Sicherheitsheader zu jedem Block hinzufügen? Das scheint überflüssig, aber wenn das die einzige Möglichkeit ist, die Site zu sichern, werde ich es tun.

Antwort1

Die add_headerRichtlinie hat eine interessante Eigenschaft.Dokumentation:

Es können mehrere add_headerDirektiven vorhanden sein. Diese Direktiven werden von der vorherigen Konfigurationsebene übernommen, wenn und nur wenn add_headerauf der aktuellen Ebene keine Direktiven definiert sind.

Das heißt, wenn Sie hinzufügenandereHeader in einem dieser locationBlöcke, dann müssen alle add_headerAnweisungen aus den serveroder Blöcken wiederholt werden.http

Erwägen Sie die Verwendung von includeD-Dateien, um Anweisungen wie diese zu organisieren, die Sie möglicherweise wiederholen müssen.

verwandte Informationen