Zum Inhalt springen

CSP für TYPO3

Erstellt am 27. September 2011 · 12 Antworten · letzte Antwort am 8. Oktober 2011

Tags: Sicherheit, Frage

qualle85 ·

Ich Quote mich da mal selber 🙂

"[...] Wie in Kapitel 1 beschrieben, ist CSP aktuell noch ein Unofficial Draft und daher für viele Browserhersteller noch nicht attraktiv genug, um es in den Kern ihrer Produkte zu implementieren. Neben dem bereits erwähnten Firefox 4 (und neuer) unterstützt aktuell nur Google Chrome ab Version 13 CSP. Im Opera Browser wird eine Erweiterung benötigt und im Safari Browser ist die Implementation von CSP nur in Planung. Microsofts Internet Explorer ab Version 8 hat bereits einen kleinen XSS-Filter, mit dem Typ1-XSS Angriffe (Siehe Kapitel 3, Schutz vor XSS in Microsofts Internet Explorer) abgefangen werden sollen. Dies soll geschehen, ohne dass eine gesetzte CSP nötig ist. Alle anderen Browser Hersteller haben sich noch nicht zum Thema CSP geäußert. [...]"

CSP-Supporting-Browsers.png

qualle85 ·

Sodale, die 0.0.1 ist fertig.
Das Plugin hackt sich mittels page.7 < plugin.tx_itspncsp_pi1 in die Page und setzt damit die zuvor über TypoScript Constants gespeicherten CSP Direktiven als HTTP Header ein. Das Backend Modul nutzt ein JavaScript Bookmarklet um eine CSP Empfehlung für die Webseite abzugeben.

Nun würde ich gerne die Empfehlungen des Bookmarklets direkt in die Constants schreiben. Weiß jemand ob es eine Funktion gibt, die TypoScript Constants (aus dem Frontend oder Backend heraus) setzen kann? Ansonsten müsst ich händisch in der sys_template Tabelle rum wühlen...o.O

T3X_itspn_csp-0_0_1-z-201109282224.t3x
15kB
qualle85 ·

Da ich das Skript kurzfristig brauche bin ich von den Constants weg und auf DB-Speicherung umgestiegen.
Version 0.0.2 kann die CSP mittels Wizard ermitteln, speichern und editieren. Was noch fehlt ist der "CSP-Violation-Browser" 😉
Bin auf Feedback und erste Reviews gespannt!

T3X_itspn_csp-0_0_2-z-201109292315.t3x
32kB
igorshmigor ·

Diesen Part

page.7 < plugin.tx_itspncsp_pi1

solltest Du lieber dem User überlassen, denn wenn page.7 bereits vergeben ist, dann ist das nicht so lustig, wenn es von einer Extension automatisch überschrieben wird.

igorshmigor ·

In class.tx_itspncsp_pi1.php überschreibst Du auch mit

$GLOBALS['TSFE']->config['config']['additionalHeaders'] = ...

alle Werte, die dort vielleicht bereits gesetzt sind. Es kann ja sein, dass der User bereits ein paar Header gesetzt hat.
Lieber prüfen, ob da schon was steht und wenn ja, den eigenen Part mit Semikolon getrennt dranhängen.

igorshmigor ·

Recht hast Du, | ist der Trenner, my mistake.

Auch wenn sich noch keiner beschwert hat, ist das kein Garant dafür, dass nicht irgendwo auf der Welt sich jemand gerade die Haare ausrauft, weil seine Seite plötzlich nicht mehr funktioniert und er keine Ahnung hat warum.

Auch gibt es Leute, die ihr page-Objekt gar nicht page nennen, sondern seite oder myhappypage. Dann wird Dein plugin gar nicht ausgeführt. Ne, ernsthaft, lieber eine Dokumentation oder kleine Readme-Datei einfügen, die den User darauf hinweist, dass er das noch machen muss. Oder was natürlich noch möglich wäre, ist eine Konstante zu verwenden und über den Constant-Editor dem User die Möglichkeit zu geben, den Default-Wert der Konstante zu ändern.