2016-08-04 3 views
0

Ich verwende Apache 2.4 und versuche, Inhaltssicherheitsrichtlinien zu implementieren. Ich habe den folgenden Header in meiner httpd.confVerwenden Sie die Inhaltssicherheitsrichtlinie scipt-src sha-Funktion mit Apache HTTP Server

Header set Content-Security-Policy "default 'none'; script-src 'self'" 

Sie nun, ich Inline-JavaScript-Code Skript-Tag in HTML, als

<script>alert('Do something here')</script> 

Beachten Sie, dass Script-Tag sinnvoll enthält JS-Code, nicht diese Warnmeldung, die ich für Beispielzwecke angegeben habe.

Jetzt blockiert die Inhaltssicherheitsrichtlinie solche Inline-Skripts. Eine Möglichkeit, diese weiße Liste ist SHA Hash für die oben genannte Skript zu berechnen und sie explizit in Kopf passieren, wie

Header set Content-Security-Policy "default 'none'; script-src 'self' sha256-dhfds73748==" 

Dies ermöglicht das Skript auszuführen.

Jetzt kann ich SHAs für diese Art von Skripten zur Build-Zeit mit Grunt generieren.

Aber muss ich diese innerhalb Apache httpd.conf manuell wie ich Änderungen an diesen Skripten vornehmen und dann manuell starten meine Apache HTTP Server?

Kann ich diesen Wert zur Laufzeit innerhalb der Apache-Konfiguration festlegen?

Bitte beachten Sie, dass ich den Code nicht in eine separate js-Datei verschieben und dann über <script src="path/to/my/file.js"></script> anrufen möchte, es sei denn, es ist die einzige Möglichkeit.

Antwort

1

Ist dies für statische HTML oder ist dies eine Webanwendung? Wenn es sich um eine Webanwendung handelt, ist eine dynamische Richtlinie ziemlich einfach. Wenn es sich um eine statische Site handelt, die eine Art von Templating verwendet (z. B. Jekyll), können Sie die csp-Metatags verwenden, um eine Richtlinie einfach zu aktualisieren.

Wenn keiner der obigen Fälle zutrifft, muss ich auf diejenigen mit spezifischer Apache-Erfahrung zurückgreifen. Ich glaube nicht, dass die Verwaltung von Meta-Tags über viele statische Seiten hinweg ein guter Ansatz ist.

+0

Ich benutze einseitige Web-Anwendung Architektur – Ozil

+1

Das Meta-Tag ist wahrscheinlich der Weg, dann zu gehen. Zumindest in Ihrer Entwicklungsumgebung. – oreoshake

+0

Oh cool! Ich wusste nicht, dass Sie Content Security Policy-Header direkt im Meta-Tag festlegen können. Danke vielmals! – Ozil

Verwandte Themen