Hat schon jemand eine Content-Security-Extension für TYPO3 geschrieben? Hab im Ext. Rep. nichts gefunden.
CSP für TYPO3
Was ist das überhaupt? Beschreib mal.
CSP ist eine (aktuell noch) proprietäre Lösung um XSS-Angriffe zu erschweren.
Näheres siehe: http://people.mozilla.com/~bsterne/content-security-policy/
Und: https://dvcs.w3.org/hg/content-security-policy/raw-file/tip/csp-unofficial-draft-20110315.html
Ich schreibe gerade eine Ausarbeitung darüber und da es anscheinend noch keine Extension gibt werde ich die auch gleich entwickeln.
Ach, cool. Wird das momentan nur von Firefox unterstützt?
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. [...]"
Süß, Du hast den Netscape Navigator mit aufgenommen. Meine erste große Internetliebe *schnief*
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
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!
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.
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.
Morgen und Danke für das Review!
Zu 1) Ich würde das Plugin schon gerne direkt einbinden. Bei meiner PHPIDS Extension hat sich da noch keiner beschwert 🙂 Außer du weißt eine Alternative, die das Plugin sofort einbindet und nichts überschreibt?
Zu 2) Okay. Trennung allerdings mit | oder? Siehe https://docs.typo3.org/m/typo3/reference-typoscript/main/en-us/TopLevelObjects/Config.html
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.
Hab Version 0.0.7 mal als Alpha ins Repository gestellt: https://typo3.org/extensions/repository/view/itspn_csp/current/
