Aktuelle Informationen rund um TYPO3

Archiv zur Kategorie Allgemein

TYPO3 Sicherheitslücken gefunden

In den CORE-Paketen von TYPO3 sind zahlreiche schwerwiegende Sicherheitslücken gefunden wurden. Es sind die folgenden Versionen betroffen:

  • 4.0.0 to 4.0.9
  • 4.1.0 to 4.1.7
  • 4.2.0 to 4.2.3

Im Zuge dessen sind auch gleich neue Versionen (4.0.10, 4.1.8, 4.2.4) veröffentlicht worden, da im Gegensatz zu Sicherheitslücken in Extensions in diesem Fall die TYPO3-Core betroffen ist und somit jede TYPO3-Seite angreifbar ist. Zwei der insgesamt 5 Sicherheitslücken sind als “schwerwiegend” einzustufen und einem Update wird dringend angeraten.

Nach dem mehr-Link kann man die komplette Meldung des TYPO3-Security-Teams lesen, wo die betroffenen Pakete und deren Schwachstellen beschrieben sind und wie man diese updatet (englisch).

weiterlesen »

FLOW3 könnte die PHP-Welt auf den Kopf stellen

Am vergangenen Donnerstag durften wir auf der TYPO3 Convention 2008 einen aktualisierten Blick in das PHP5-Applikationsframework FLOW3 werfen dürfen, welches auch die Grundlage für TYPO3 5.0 bildet. Bereits im vergangenen Jahr wurde die TYPO3-Messe von diesen Themen dominiert, dieses Jahr gab es etwas konkretere Beispiele zu sehen.

Das Framework vereint hierbei viele Vorgehensweisen aus anderen Frameworks (wie dem Zend Framework oder Rails) mit Ideen aus der Java-Welt und dem bekannten Java-Framework Spring. Hierbei kommen auch Konzepte zum Einsatz, die bisher noch nicht in der PHP-Welt zu finden waren. Einige Beispiele werden im Folgenden kurz vorgestellt:

  • Als ein gutes Beispiel kann hier Aspect Oriented Programming (AOP) genannt werden. Hierbei werden alle Klassen einer FLOW3-Anwendung automatisch über Reflection analysiert und bei Bedarf um verschiedene Funktionen erweitert. Au-ßerdem ist es Entwicklern in sogenannten Aspects möglich, die Abläufe an bestimmten Stellen der Programmausführung dynamisch zu verändern. Diese Stellen, sogenannte „cross-cutting concerns“, können beispielsweise genutzt werden, um während der Laufzeit zu prüfen, ob der jeweilige Benutzer überhaupt berechtigt ist, die aktuelle Aktion auszuführen.
  • Ein weiteres Prinzip, das den meisten PHP-Entwicklern bisher noch neu vorkommen sollte, ist Domain Driven Design. Hierbei soll es den Entwicklern ermöglicht werden, sich auf die Umsetzung der jeweiligen Geschäftslogik zu konzentrieren. Nebenschauplätze wie Persistenz oder Sicherheit werden entweder automatisch von FLOW3 oder über AOP adressiert.
  • Um die Speicherung von Objekten kümmert sich das eigens entwickelte Content Repository nach JSR-283 Standard. Hierbei erstellt der Entwickler ausschließlich PHP-Objekte mit entsprechender PHP-Dokumentation, ohne über XML oder YAML eine Konfiguration erstellen zu müssen. FLOW3 erkennt anhand der Klassenkonfiguration, den Attributen und Methoden sowie den dazugehörigen Dokumentationen automatisch alle zu speichernden Werte. Die Persistenz soll in Kürze in einem eigenem Beitrag genauer erläutert werden. Bereits vor seiner endgültigen Fertigstellung schlägt das TYPO3 Content Repository jedoch bereits Wellen: TYPO3 5.0 Core Entwickler Karsten Dambelkans wurde als Mitglied zum JSR-283-Standard-Ausschuss berufen – eine Ehre, die nur den Größten der Software-Szene zuteil wird.
  • Während in herkömmlichen Anwendungen alle Abhängigkeiten innerhalb der Objekte selbst festgelegt werden, kann Dependency Injection dafür sorgen, dass starre Abhängigkeiten reduziert werden. FLOW3-Komponenten lassen sich so flexibel je nach Laufzeitumgebung und Konfiguration austauschen und so auf die situativen Umstände der Anwendung anpassen.

Um das Framework prinzipiell nutzen zu können, ist PHP Version 5.3 Pflicht. Dies liegt nicht zuletzt daran, dass FLOW3 bereits jetzt Namespaces nutzt, um seine Klassen zu ordnen. Zum jetzigen Zeitpunkt liegt diese Entscheidung Entwicklern noch relativ schwer im Magen, da noch keine Entwicklungsumgebungen existieren, die Namespaces direkt unterstützen.

Oben genannte Operationen sind jedoch relativ rechenintensiv, so dass ein zentrales Prinzip auch in FLOW3 und TYPO3 5.0 erhalten geblieben ist: das Caching. So werden alle Ergebnisse der Klassenanalyse und –erweiterung in einem Datenordner zwischengespeichert und so auf Performance optimiert. Trotzdem versprechen die Core-Entwickler auch in der ungecachten Verarbeitung noch deutliche Geschwindigkeitsverbesserungen. In diesem Zusammenhang konnte Robert Lemke jedoch gleich allen Zuhörern fünf Tipps auf den Weg geben, die bereits für TYPO3 4.x oftmals Geltung hatten:
1.    Immer die aktuellste Version !!!
2.    Cache leeren !!!
3.    Dokumentation lesen !!!
4.    Newsgroups durchsuchen !!!
5.    Es ist kein Fehler, sondern ein fehlendes Feature !!!

Insgesamt sieht FLOW3 (wie übrigens schon im vergangenen Jahr) sehr vielversprechend aus. Die Resonanz, die verschiedene Universitäten und sonstige Organisatoren zeigen, bestätigt dies. Bestehen bleiben jedoch einige Zweifel, ob es je zu einem Abschluss der Arbeiten kommt. Doch hier konnte Robert Entwarnung geben: Bereits Ende des Jahres sei mit einer stabilen Beta-Version oder gar einer ersten finalen Version des Frameworks zu rechnen. So dieser Zeitpunkt eingehalten werden kann, ist davon auszugehen, dass mit FLOW3 dann das wohl mächtigste PHP Anwendungs-Framework seiner Zeit auch aus dem Hause TYPO3 stammt.

T3Con08: Live aus Berlin

Hallo,

morgen beginnt die Typo3 Convention 2008 in Berlin offiziell und bereits heute gibt es einiges zu sehen, denn heute stehen die Tutorials auf dem Plan. Wir sind mit zwei Personen auf der T3Con unterwegs und werden hier unsere Eindrücke und den einen oder anderen Beitrag kommentieren.

Am morgigen Freitag sind wir dann direkt selbst dran mit unserem Beitrag zum Thema Integration von Magento und TYPO3. Doch hierzu wird man später mehr lesen können.

Bis dahin - viele Grüße an alle Leser aus Berlin!

Eine vergessene Funktion: substituteMarkerArrayCached

TYPO3 stellt diverse Funktionen zur Verfügung, die die Erstellung von Extensions deutlich vereinfachen. Dabei gibt es auch einige, die selten genutzt werden, obwohl sie bestimmte Probleme deutlich vereinfachen.

Eine dieser Funktionen ist substituteMarkerArrayCached. Sie dient dem vereinfachten Austausch von Markern, Subparts und sogenannten Wrapped Subparts. Marker lassen sich zugegebenermaßen auch über substituteMarkerArray, Subparts über substituteSubparts austauschen. Auf die Vorteile dieser Funktion werde ich im Nachfolgenden kurz eingehen.

Zunächst vermag sie, wie bereits angedeutet Wrapped Subparts auszutauschen (soweit ich das bisher gesehen habe, ist es überhaupt die einzige). Mit solchen Wrapped Subparts ist es möglich, Elemente im Template in durch PHP zu umrahmen, was sich inbesondere bei Verlinkungen auszahlen kann. Was das bedeutet, sollen folgende Codeschnipsel andeuten:

  1. <!– ###LINK_ITEM### –>Weitere Informationen<!– ###LINK_ITEM### –>

Nun lässt sich mit nachfolgendem Code bequem ein Link um das “Weitere Informationen” setzen:

  1.         $wrappedSubparts[‘###LINK_ITEM###’] = explode(‘|’, $this->pi_linkTP_keepPIvars(‘|’, array(‘function’ => ‘var’), $value));
  2.         $content .= $this->cObj->substituteMarkerArrayCached($template, $markerArray, $subparts, $wrappedSubparts);

Wie gezeigt werden im Gegensatz zu normalen Markern und Subparts nicht einzelne Inhalte, sondern jeweils zwei übergeben, die vor bzw. hinter dem Elemente eingefügt werden. Da substituteMarkerArrayCached nicht allzu verbreitet ist, wurde diese Funktionalität bisher relativ oft über die Kombination von getSubpart und substituteSubpart realisiert. Dies führt nicht zuletzt auch zu deutlich unübersichtlicherem und unlesbarerem Code.

Außerdem hilft die Funktion auch punktuell die Performance der Verarbeitung der Strings zu verbessern. Dies wird über Überprüfung und Caching des übergebenen Template-Code und den Daten-Arrays vor der Verarbeitung gewährleistet. Dies sollte sicher nicht überbewertet werden, kann sich bei konsequenter Anwendung aller Caching-Mechanismen jedoch auch positiv auswirken.

Insgesamt wird mit substituteMarkerArrayCached ein Werkzeug an die Entwicklerhand gegeben, die das Leben durchaus erleichtern kann. Ein genauerer Blick kann sich also durchaus lohnen!

PS: Wir sind durchaus offen für weitere vorstellungswürdige Funktionen, die in TYPO3 versteckt schlummern und auf ihre Nutzung warten.

Flexible runde Ecken mit TYPO3

Bilder mit runden Ecken lassen sich in TYPO3 recht einfach mit einer Bildmaske realisieren. Sollen aber Bilder mit unterschiedlichen Abmessungen ersetzt werden, ist es von Vorteil, die Bildmaske dynamisch generieren zu lassen. Benötigt werden dann nur die vier Eckmasken:

weiterlesen »

« Vorherige Einträge