Ich möchte die interne Rails: Backlink-Funktionalität für meine Anwendung mit einer aktiven Content-Security-Policy erlauben.Active Content-Security-Policy (CSP) und Rails: Backlink
CSP:
%meta{"http-equiv" => "Content-Security-Policy", "content" => "default-src *;"}
Beispiel Link:
= link_to 'Back', :back
# <a href="javascript:history.back()">Back</a> *
* Schienen Verbindungen zum referer und nur wenn kein referer gesetzt fällt auf JS zurück.
Wie kann ich nur dieses winzige history.back()
Stück Javascript in die Whitelist aufnehmen?
Ich habe versucht, eine Ausnahme zu setzen, wie in https://www.w3.org/TR/2015/CR-CSP2-20150721/#script-src-hash-usage und erzeugen die erforderlichen Hash wie folgt beschrieben:
echo -n "history.back()" | openssl dgst -sha256 -binary | openssl enc -base64
Ergebnis:
%meta{"http-equiv" => "Content-Security-Policy", "content" => "default-src *; script-src 'self' 'sha256-LdlORHyUW/rwezK0l13nW+IwcZmi78eWOCBjewMWRr4='"}
Aber die Chrome-Konsole zeigt die gleichen Fehler wie die Hash-Mittel ist ungültig:
Abgewiesen, um JavaScript-URL auszuführen, weil es gegen die folgenden verstößt dank Inhalt Sicherheitsrichtlinie Richtlinie: "script-src 'selbst' 'sha256-SmahML3R6 + R4SRnsB6tEJ8Z4OVa4Qhk7A/gv3eAiG6s ='". Entweder ist das Schlüsselwort 'unsafe-inline', ein Hash ('sha256 -...') oder ein Nonce ('nonce -...') erforderlich, um die Inline-Ausführung zu aktivieren.
Leider löst dies nicht mein Problem, weil der HTML-Code und Javascript für den Backlink von Rails und nicht von mir generiert wird. – ToniTornado
In der Tat. Was ich vorschlagen würde, ist nicht Link_to "Back",: zurück, aber so etwas wie link_to "Zurück", "#", Daten: {Verhalten: 'Backlink'}. Dann in JS: $ ('[data-behavior ~ = back-link]'). On ('click', function() {history.back}); – hawe