CSP / jQuery

evaki

Das Inline-Problem läßt sich wohl mit CSP-kompatiblen Browsern lösen, indem man die Direktive "hash-source" verwendet, wenn ich es richtig verstanden habe (noch nix im Sandkasten). Wer "barrierefreie" Auftritte baut, hat damit kein Problem, nur"etwas ältere Browser" werden "Bahnhof verstehen. Ist also anscheinend ein "paßt scho" wert.  :-D
MfG. Evaki
p.s. Gibts WB-Anwender, die CSP schon erfolgreich einsetzen?

evaki

#8
Für diejenigen, die schon mal "spielen" wollen, und für sowas wenig Zeit aufwenden können.

Bei uns (im Sandkasten) finden sich im Template-Index die Header:
header("X-Frame-Options: DENY");

header("X-Content-Type-Options: nosniff");
header("Content-Security-Policy-Report-Only: default-src 'self'; font-src 'self'; img-src 'self' http://*.domain1.tld http://*.domain2.tld; media-src *; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; report-uri http://localhost/CSP/cspreport.php");
//header("Content-Security-Policy-Report-Only: default-src 'self'; font-src 'self'; img-src 'self' http://*.domain1.tld http://*.domain2.tld; media-src *; script-src 'self'; style-src 'self' 'unsafe-inline'; report-uri http://localhost/CSP/cspreport.php");

header("X-XSS-Protection: 1; mode=block");


Bei jedem Browserzugriff (CSP-fähig) wird im Beispiel: http://localhost/CSP/cspreport.php aufgerufen, und gegebenenfalls ein Report erzeugt, im Beipiel "cspreport.php" ist es die Datei csp-report-log.txt

Inhalt von cspreport.php
<?php
date_default_timezone_set
("UTC");
$tstamp date('Y-m-d H:i:s');
$browser $_SERVER['HTTP_USER_AGENT']; 
http_response_code(204); 
$data file_get_contents('php://input'); 
if (
$data json_decode($data)) { 
$data json_encode
$data
JSON_PRETTY_PRINT JSON_UNESCAPED_SLASHES 
); 
$datei fopen("csp-report-log.txt""a"); 
fwrite ($datei"\r\n"); 
fwrite ($datei'UTC: '.$tstamp);
fwrite ($datei"\r\n"); 
fwrite ($datei$browser); 
fwrite ($datei"\r\n"); 
fwrite($datei$data); 
 
fclose($datei); 


MfG. Evaki

evaki

#7
>>Jedenfalls bastle ich da an einer völlig neuen Ausgabetechnik, um das Ding einzubauen...
Jo, beim noch genaueren Hinschauen, teilweise aber auch dumm aus der Wäsche gucken, nun auch gesehen, daß es komplexer als gedacht ist. Mit viel Gefummle bekommt man auf der Konsolenzeile dann auch mal
Source:
      var URL = 'http://localhost';
      var W....
zu sehen. 
Na dann viel Spaß damit  8-)
MfG. Evaki

DarkViper

Die Einhaltung der ContentSecurityPolice ist bei derzeitigem WB (und auch bei den meisten anderen Systemen) nicht so ganz einfach. ;)

Um das halbwegs sinnvoll zu nutzen, sollte auf jegliches Inline-JS oder JS-Includes innerhalb des Bodys (mit Ausnahme am Ende) verzichtet werden. Das selbe gilt für JS-Events in HTML-Tags (onClick=".."  etc.).
JS-Quellen von externen URLs müssen explizit freigegeben werden. Am einfachsten ist es noch, wenn alles JS vom eigenen Server kommt.
Und noch eine ganze Latte weiterer Punkte, die beachtenswert sind. (siehe die RFCs dazu)

Mal sehen, was die nächste große Versionsnummer von WB in dieser Hinsicht bringt. Jedenfalls bastle ich da an einer völlig neuen Ausgabetechnik, um das Ding einzubauen... braucht nur alles seine Zeit.
[url=http://www.youtube.com/watch?v=tmzDAz6ZvFQ]Der blaue Planet[/url] - er ist nicht unser Eigentum - wir haben ihn nur von unseren Nachkommen geliehen[br]
[i]"You have to take the men as they are... but you can not leave them like that !" :-P [/i]
[i]Das tägliche Stoßgebet: [b]Oh Herr, wirf Hirn vom Himmel ![/b][/i]

evaki

Tja, und die folgende Meldung hatte ich bei dem Hin und Her ganz unterschlagen.
mit der Regel: script-src 'self' 'unsafe-inline';
gibts: Source: call to eval() or related function blocked by CSP.
Mit 'ner Erweiterung der Direktive per 'unsafe-eval' ist die Meldung zwar weg, ist aber wie Schuß durchs Knie.... vorne zu, hinten wieder auf -ups
Wird das mit CSP3 besser?
MfG. Evaki

evaki

Danke für die Klärung.
Hatte das Template zugeschickt bekommen, und konnte die Meldung bestätigen.
Beim gleichen, aber geänderten (was, wie, wo = wech) ließ sich die Meldung nicht mehr reproduzieren.
Hast Du "ne Ahnung" bei welchem Zustand diese Meldung auftritt?
Falls es wirklich "unwichtig" ist, Deine Erklärung ist ja mehr als befriedigend, braucht es keine weitere Ausführungen.
MfG. Evaki

dbs

QuoteEs funktioniert ansonsten
Moin, weil es funktioniert und gut mit älteren Plugins zusammenarbeitet, wird es wohl nicht aktualisiert.
Täte man dies, müsste man wohl auch jQuery-Migrate dazuladen um ältere Plugins zu unterstützen oder die User müssten sich aktuellere Plugins/Versionen suchen.

Eigene Einbindungen sind natürlich auch möglich.
[url="https://onkel-franky.de"]https://onkel-franky.de[/url]

evaki

Vielleicht kann mir ja jemand sagen ob ich hier Ursache und Wirkung verwechselt habe.
Bei Javascript sehe ich leider nur sehr alt aus...
MfG. Evaki

evaki

Bekomme auf der Console immer die Meldung:
getPreventDefault() sollte nicht mehr verwendet werden. Verwenden Sie stattdessen defaultPrevented.
jquery-min.js:3:6598

Wird jQuery in der nächsten WB-Version "ausgetauscht"?
Es funktioniert ansonsten, inkl. Report(.txt)
Getestet wird anscheinend auf CSP2
MfG. Evaki