Umfeld:Nginx, Node.js, Digital Ocean Droplet
Die Dokumente für dieKopfzeile hinzufügenhttp
-Direktive gibt an, dass sie in einem , server
oder -Kontext verwendet werden kann location
.
Wenn ich jedoch meineInhaltssicherheitsrichtlinieentweder die http
oder server
Kontext wird es nicht erkannt, wenn ich es teste beihttps://csp-evaluator.withgoogle.com/oderhttps://securityheaders.com/.
Wenn ich es zu einem location
Block hinzufüge, erkennen es beide Sites.
Beispielheader:
add_header content-security-policy "default-src 'self';"
Meins nginx.conf
hat 5 location
Blöcke, einer wird als Proxy verwendet. Muss ich content-security-policy
jedem 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_header
Richtlinie hat eine interessante Eigenschaft.Dokumentation:
Es können mehrere
add_header
Direktiven vorhanden sein. Diese Direktiven werden von der vorherigen Konfigurationsebene übernommen, wenn und nur wennadd_header
auf der aktuellen Ebene keine Direktiven definiert sind.
Das heißt, wenn Sie hinzufügenandereHeader in einem dieser location
Blöcke, dann müssen alle add_header
Anweisungen aus den server
oder Blöcken wiederholt werden.http
Erwägen Sie die Verwendung von include
D-Dateien, um Anweisungen wie diese zu organisieren, die Sie möglicherweise wiederholen müssen.