Aktuelle Informationen rund um TYPO3

Archiv des Monats September, 2011

Sicherheit bei TYPO3

Eines der größten Themen im Jahr 2011 für die digitale Gesellschaft ist das Problemfeld Sicherheit im Netz. Spektakuläre Fälle wie die Angriffe auf Sony oder die Aktivitäten der Gruppierung „Anonymous“ finden in der Presse Beachtung und stoßen bei vielen Webseitenbetreibern auf großes Echo. Daher steht diese Thematik auch innnerhalb der TYPO3 Community in der Diskussion. Bei den Betreibern der Webseiten herrscht derzeit zumeist Verunsicherung vor und viele stellen sich die Frage, wie sicher denn Ihre Webseite sei. Als TYPO3-Dienstleister können wir in jedem Fall nur raten, sowohl TYPO3 als auch die installierten Extensions immer auf dem neusten Stand zu halten und sich per typo3.org oder TYPO3 Announce Mailing List stets über aktuelle Probleme zu informieren. Da diese Ratschläge aber vielen als zu allgemein gelten, wollen wir hier ein paar Empfehlungen des TYPO3-Cookbooks darstellen, die, sofern befolgt, die TYPO3-Instanz gleich sicherer machen.

  • Installationstool sichern: Das Installationstool sollte nach Gebrauch entweder deaktiviert oder gleich das ganze Verzeichnis entfernt werden. Alternativ kann man auch den Zugriff per .htacess auf bestimmte Hosts, Netzwerke oder Domains beschränken.
  • Admin Password/Namen: Was auch für andere Netzwerke gilt, sollte auch bei der Verwaltung von TYPO3-Instanzen gelten: Das Admin-Password sollte sofort nach der Einrichtung geändert werden. Noch sicherer wird das ganz natürlich, wenn der default-Admin durch neue, personalisierte Admin-Nutzer ersetzt wird.
  • Keine Demo Packages für Live-Systeme nutzen: Diese Packages sind wie der Name eigentlich schon sagt nur zum Testen gedacht.
  • Rechtevergabe im Datei System: Beachten, wer welche Rechte bekommt, lieber sparsam verteilen. Auf jeden Fall User Accounts kein Schreibrecht auf Webservern geben.
  • Unnötigen Code und Extensions entfernen: Wirklich nur das lassen, was wirklich gebraucht wird, um keine unnötige Angriffsfläche zu bieten.
  • Sicherheitsoptionen: TYPO3 bietet einige Sicherheitsoptionen. Hier sind nur wenige allgemeingültige Aussagen möglich (bspw sollte in jedem Falle der der EncryptionKey gesetzt werden), je nach System sind aber unterschiedliche Parameter hilfreich.
Sicherheit TYPO3

Mit rechtzeitigen Updates halten Sie Ihr TYPO3 vor Angriffen verschlossen.

Das Kochbuch hält noch weitere Tipps parat, aber die hier genannten sind auf jeden Fall die wichtigsten, um für ausreichende Sicherheit im TYPO3-System zu sorgen.

Um auf eventuelle Angriffe reagieren zu können ist es des Weiteren natürlich wichtig, immer Backups zu erstellen, am besten vom kompletten System, aber zumindest von allen Dateien im root. Ebenso sollten die Logs gespeichert werden, um eventuelle Schwachstellen zu erkennen und den oder die Angreifer ausfindig machen zu können.

Sofern es tatsächlich mal zu einem Angriff kommt und Sie erkennen diesen, sollten die betroffenen Webseiten oder gar die ganzen Server vom Netz genommen werden, bevor sich Viren und Co. noch weiter verbreiten. Danach kann in Ruhe eine saubere Version eingespielt werden. Mit den mitgespeicherten Logs kann man den Angriff analysieren. Viel wichtiger als das Erkennen der Angreifer ist dabei das Erkennen der Schwachstellen. Liegt diese im TYPO3 Core oder bei Extensions, sollte in jedem Falle das TYPO3 Security Team informiert werden.

Usability-Blog verweist auf ffn-Webseiten

Steffen Heim hat auf dem Usability-Blog einen Beitrag über die verschiedenen Zugangsmöglichkeiten zu Informationen geschrieben und sich dabei die Webseite, mobile Webseite und die Smartphone App des Radiosenders ffn als Beispiel aufgegriffen. Da zumindest die beiden erstgenannten von uns realisiert wurden, war das Ganze natürlich für uns von ganz besonderem Interesse.

Umso mehr freut es uns, dass Steffen Heim ein positives Fazit für die Projekte gezogen hat. Vor allem Übserichtlichkeit und Bedienbarkeit hebt er als gelungen hervor. Allerdings zeigt er auch noch 1,2 Verbesserungsmöglichkeiten gerade im Bereich mobile Seiten auf, die wir für dieses und weitere Projekte in der Zukunft natürlich im Hinterkopf behalten werden.

TypoGento und neuere Versionen von TYPO3

Wer TypoGento verwendet oder verwenden möchte und dabei eine neue TYPO3-Version einsetzt, erhält bei der aktuellen Version einen Fehler. Der Fehler tritt bei allen TYPO3-Versionen auf, welche nicht mehr von der Sicherheitslücke TYPO3-CORE-SA-2011-001 betroffen sind.

Der Grund für den nun auftretenden Fehler ist ein deutlich vorgezogenes Starten der PHP-Session, wenn ein Benutzer eingeloggt ist. Dieses vorgezogene Starten der Session war für das Beheben der Sicherheitslücke entscheidend. Die Fehlermeldung, welche ein Webseiten-Besucher zu sehen bekommt ist die Folgende:

Fatal error: Mage_Core_Model_Session_Abstract::getMessages() [mage-core-model-session-abstract.getmessages]: The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition "Mage_Core_Model_Message_Collection" of the object you are trying to operate on was loaded _before_ unserialize() gets called or provide a __autoload() function to load the class definition in /.../magento/app/code/core/Mage/Core/Model/Session/Abstract.php on line 215

Der Fehler tritt auf, weil TypoGento für das Laden von Magento-Klassen den Magento-Autoloader entfernt und gegen einen eigenen Autoloader ersetzt. Dass passiert bei Rendern des Plugin-Codes.

Typogento Logo Flagbit

TypoGento- Logo

Magento speichert PHP-Objekte serialisiert in der Session. Wenn die Session gestartet wird, werden diese Objekte wieder deserialisiert. Das klappt aber nur, wenn der Autoloader von TypoGento bereits registriert ist. Bisher war das der Fall. In den neueren TYPO3-Versionen wird die Session aber deutlich früher wieder hergestellt und der Autoloader ist noch nicht ausgetauscht bzw. registriert. Somit kommt es zu der o.g. Fehlermeldung.

Um mit dem geändertem Session-Handling umgehen zu können, haben wir einige Punkte in TypoGento refactored. Allerdings wird TypoGento nun nur noch mit TYPO3 4.3 und neuer funktionieren. Wer einen ersten Entwicklungsstand ausprobieren möchte, kann sich auf GitHub (https://github.com/Flagbit/TypoGento) den Branch “beta” downloaden. Für Feedback sind wir selbstverständlich dankbar.

Betroffen sind im Übrigen die TYPO3-Versionenen 4.3.12 und neuer, 4.4.9 und neuer sowie 4.5.4 und neuer. Somit sind also auch alle aktuellen TYPO3-Versionen betroffen.

TYPO3 4.6 Beta – Änderungen

Wenn alles nach Plan läuft, wird am 25. Oktober eine neue Major-Version von TYPO3, nämlich TYPO3 4.6.0 alias “Rebase” erscheinen. Die erste Beta erblickte bereits am 30. August 2011 das Licht der Welt.

Es wird also höchste Zeit, sich mit den Neuerungen dieser Version zu beschäftigen. Nachdem die aktuelle Version TYPO3 4.5 unter dem Fokus größtmöglicher Kompatibilität entwickelt wurde, wird mit der Version 4.6 eine Vielzahl dieser Altlasten aufgegeben und somit der Prozess für die Entwicklung neuer Features vereinfacht. Auf die geplanten Änderungen für die Version 4.6 bin ich bereits in einem älterem Artikel eingegangen.

Nun ist die Entwicklung schon viel weiter und man kann Bilanz ziehen, welche Änderungen uns nun wirklich in der neuen Version erwarten:

PHP >5.3 benötigt

Für die meisten wird die einschneidenste Änderung wohl die Aufgabe der Unterstützung von PHP-Versionen kleiner 5.3 und den damit ebenfalls aufgegebenen Support für Safe Mode sein. Wer noch eine ältere Version von PHP einsetzt, wird somit nicht auf TYPO3 4.6 updaten können.

Ebenso wurde der Support für ältere Image Magick Versionen aufgegeben. TYPO3 rendert nun nur noch Bilder mit der aktuellen ImageMagick Version 6 oder mit GraphicsMagick.

XLIFF

Weiterhin wurde das locallang-Konstrukt für die Lokalisierungen im Core abgelöst. In TYPO3 4.6 kommt nun XML Localization Interchange File Format, kurz XLIFF, zum Einsatz. XLIFF ist ein unabhängig von TYPO3 entwickelter Standard zur Darstellung hierarchisch strukturierter Daten von Übersetzungsprogrammen. In FLOW3 werden die Übersetzungen bereits mit XLIFF gehandhabt, so dass die Implementierung von dort nun als Backport im TYPO3 4.x Core zu finden ist.

Selbstverständlich kann und sollte XLIFF nun auch in TYPO3 Extensions verwendet werden, obgleich die alten Techniken vorerst schon noch funktionieren. Für den einfachen Umstieg auf das neue Format ist ein Converter in Planung.

Neues Form Content Object

Eine weitere auffällige Neuerung ist das neue FORM-cObject. Es ermöglicht auf möglichst einfache Weise unter Verwendung vielfältiger JavaScript-Funktionen sich ein Formular per Drag-n-Drop zusammen zu stellen. Dabei sieht der Redakteur sofort, wie sein Formular später aussehen wird. Somit lassen sich auch von Redakteuren relativ komplexe Formulare einfach realisieren.

Performance-Verbesserungen

Zusätzlich werden einige Performance-Verbesserungen Einzug in TYPO3 4.6 halten. So werden nun Fluid-Templates in PHP-Dateien kompiliert. Außerdem ist das neue Caching-Framework, welches mit TYPO3 4.3 eingeführt wurde, nun immer aktiviert. Früher musste dieses noch explizit aktiviert werden.

Aber auch im Backend sollen verschiedene Neuerungen die Performance optimieren. So sind z.B. nun alle JavaScript und CSS-Dateien zu einer großen Datei zusammengefügt, was die Anzahl der Page-Requests im Backend stark reduziert. Fürs Frontend kann eine entsprechende Mergefunktion nun ebenfalls aktiviert werden.

Sonstiges

Letzlich gibt es wie immer noch viele kleine Gimmicks, welche das Leben mit TYPO3 einfacher machen. So muss nun der Administrator nun nicht mehr die Datei “ENABLE_INSTALL_TOOL” anlegen, wenn er das Install-Tool aus dem Backend heraus aufruft. Dies erledigt nun das Backend-Modul vollkommen automatisch.

Außerdem wird nun beim Berechnen der Zeit, bis wann eine Seite im Cache landen soll, die Start- und Stop-Zeit von Inhaltslementen beachtet. Dies lässt Extensions wie Cache Expire überflüssig werden.

Und zu guter letzt gibt es auch noch ein paar neue Features für stdWrap. So steht nun zum Beispiel .round zu verfügung, um Zahlen zu runden. Und mit .hash lassen sich nun mit TypoScript Hashes berechnen.

Wer eine komplette Liste der Änderungen einsehen möchte, kann auch noch einmal im Wiki und auf der Projekt-Webseite nachlesen.