WebsiteBaker Support (2.10.x) > Hilfe & Support (deutsch)

CSP / jQuery

<< < (2/2)

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.

evaki:
>>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

evaki:
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

--- Code: ---<?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); 

--- End code ---

MfG. Evaki

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?

Navigation

[0] Message Index

[*] Previous page

Go to full version