Die TYPO3 Kernentwickler haben in den letzten Wochen hart gearbeitet, um alle versprochenen Features in den TYPO3 v12 Releasezyklus zu integrieren. Unsere Community, bestehend aus großartigen Entwicklern und talentierten Mitwirkenden aus verschiedenen Bereichen, hat ebenfalls dazu beigetragen, diese Version fertig zu stellen. Dank all dieser Bemühungen kann das TYPO3 Team mit Stolz sagen, dass TYPO3 Version 12.3 nun vollständig ist.
Bis zum Long-Term-Support-Release (LTS) im April 2023 liegt der Fokus nun auf der Vervollständigung und Verbesserung bestehender Funktionen und der Auffrischung der Benutzeroberfläche, wo dies notwendig ist. Aus diesem Grund möchten wir Agenturen dazu ermutigen, TYPO3 v12 für die Erstellung von Produktionssites zu verwenden und alle neuen Technologien und Funktionen zu nutzen. Dies gilt insbesondere für Projekte mit langen Entwicklungszeiten.
Werfen wir einen genaueren Blick auf die wichtigsten Änderungen der neuen Version. Eine detaillierte technische Übersicht mit weiteren Informationen finden Sie unter docs.typo3.org.
Wichtige Änderungen in der TYPO3 Version 12.3
Ausgehende Webhooks
Sie erinnern sich sicher an das neue Feature "Reactions", das mit TYPO3 Version 12.1 eingeführt wurde (siehe Releaseankündigung). Mit dieser Funktion können Integratoren und Administratoren TYPO3 so konfigurieren, dass es auf eingehende Webhook-Aufrufe reagiert.
Um das in den allgemeinen Zielen für TYPO3 v12 definierte Ziel zu erreichen, kann das System nun auch Ereignisbenachrichtigungen über ausgehende HTTP-Aufrufe an andere Systeme senden. Diese Funktion nennt sich "Outgoing Webhooks" und kommt mit einem neuen Backend-Modul System ➜ Webhooks, mit dem Sie die Anfragen konfigurieren können.
Zuerst wählen Sie ein Ereignis aus einer vordefinierten Liste von Ereignissen aus (z.B. wenn sich ein Frontend-Benutzer nicht anmelden kann). Dann vergeben Sie einen Namen und die Ziel-URL, an die TYPO3 die Anfrage senden soll. Eine Beschreibung ist optional, aber Sie müssen ein geheimes Token generieren. Das "Geheimnis" kann in dem System, das die Webhook-Anfrage empfängt, verwendet werden, um die in der Anfrage enthaltenen Daten zu validieren.
Sie können auch zusätzliche Daten in der Nutzlast bereitstellen und HTTP-Header hinzufügen, um die HTTP-Anfrage nach Bedarf zu verfeinern.
Die Automatisierung von Aufgaben ist eine großartige Möglichkeit, den Aufwand zu reduzieren und Risiken zu minimieren - insbesondere wenn man mit integrierten Systemen arbeitet, die miteinander kommunizieren, Daten austauschen und Remote-Funktionen auslösen. Mit TYPO3 v12 LTS ist es nun möglich, Inbound- und Outbound-Webhooks zu konfigurieren. Das Besondere an den Inbound- und Outbound-Webhooks ist, dass TYPO3 den Integratoren und Entwicklern die Arbeit abnimmt.
Als Entwickler fragen Sie sich sicher, was Sie tun müssen, um Ihre Events als Outgoing Webhooks zu registrieren.
Die Antwort ist einfach: Sie müssen buchstäblich nur eine Zeile PHP-Code zu einer Eventklasse hinzufügen.
Die TYPO3-Dokumentation beschreibt, wie man einen PSR-14 EventDispatcher implementiert. Um ein Ereignis im System ➜ Webhooks-Backend-Modul verfügbar zu machen, markieren Sie die Klasse mit dem Attribut "TYPO3\CMS\Core\Attribute\RemoteEvent", wie im Changelog gezeigt.
Wenn Ihr T3 Projekt erfordert, dass TYPO3 einen benutzerdefinierten Webhook sendet, ohne dass ein Integrator oder Administrator etwas konfigurieren muss, können Sie das Backend-Modul umgehen, indem Sie die TYPO3\CMS\Webhooks\Factory\WebhookInstructionFactory verwenden.
Bitte beachten Sie, dass ausgehende Webhooks über den Message Queue/Bus laufen, der in TYPO3 Version 12.2 implementiert wurde. Weitere Informationen finden Sie in der TYPO3-Dokumentation.
Content-Sicherheits-Policy (CSP)
Ein weiteres Highlight der TYPO3 Version 12.3 ist die neue Funktion zur komfortablen Konfiguration von Content Security Policies (CSP) für das Backend und das Frontend. Die MDN Web Docsbeschreiben CSP wie folgt:
"Content Security Policy (CSP) ist eine zusätzliche Sicherheitsebene, die hilft, bestimmte Arten von Angriffen zu erkennen und zu entschärfen, einschließlich Cross-Site Scripting (XSS) und Data-Injection-Angriffen. Diese Angriffe werden für alles Mögliche verwendet, vom Datendiebstahl über die Verunstaltung von Websites bis hin zur Verbreitung von Malware."
Cross-Site Scripting steht seit vielen Jahren auf der bekannten OWASP-Top-10-Liste für die Sicherheit von Webanwendungen. Mit der Einführung von CSP in TYPO3 sollen Sicherheitslücken geschlossen werden, die häufig durch das Fehlen einer ausreichenden Verschlüsselung der von den Benutzern eingegebenen Inhalte entstehen.
TYPO3-Entwickler und -Integratoren haben nun die Möglichkeit, Richtlinien zu erstellen, die Browsern vorgeben, wie sie mit bestimmten Ressourcen umgehen sollen. Eine Richtlinie, die als zusätzlicher HTTP-Header an den Client übermittelt wird, kann beispielsweise festlegen, welche extern gehosteten JavaScript- oder CSS-Dateien legitim sind. Schädliche Ressourcen, die ein Angreifer in das System eingeschleust haben könnte, werden blockiert, da sie nicht dem CSP entsprechen.
Ein neues Backend-Modul Admin Tools ➜ Content Security Policy befindet sich in der Entwicklung und ist für TYPO3 v12 LTS geplant. Die Benutzeroberfläche wird z.B. eine Übersicht über CSP-Verletzungen bieten.
Standard Security Header für das Backend
Zusätzlich zu den oben beschriebenen optionalen Content Security Policies sendet das TYPO3-Backend nun standardmäßig die folgenden allgemeinen HTTP-Sicherheitsheader:
Strict Transport Security: max-age=31536000 X-Content-Type-Options: nosniff Referrer-Richtlinie: strict-origin-wenn-cross-origin
Sie können die Standard-Sicherheitsheader (Security-Header) anpassen, indem Sie in der globalen Konfiguration Einträge hinzufügen, überschreiben oder entfernen, um Ihren individuellen Anforderungen gerecht zu werden.
Diese Sicherheitsheader kommen zusätzlich zu dem "X-Frame-Options: SAMEORIGIN"-Header, den TYPO3 bereits bei Anfragen an das Backend sendet.
Obwohl der CSP und die Standard-Sicherheitsheader keine Schwachstellen in den Extensions beheben, fügen sie eine weitere Ebene hinzu, um die Sicherheit des CMS und seiner Benutzer zu erhöhen.
Element-Browser
Das Backend-Modul Filelist ➜ Files hat im Laufe der letzten Sprint-Releases eine ganze Reihe spannender Verbesserungen erfahren. Zum Beispiel die Kachelansicht in TYPO3 Version 12.1, die mit größeren Thumbnails und weniger Details einen besseren Überblick über die Assets in einem Ordner bietet. Auch die Erweiterung der Drag&Drop-Funktion, die nun auch zwischen dem Content-Bereich und dem Datei-/Ordnerbaum funktioniert, ist eine tolle Verbesserung. Und natürlich das neue Verfahren zur Erstellung von Ordnern über ein intuitives modales Fenster.
Um ein noch einheitlicheres Erlebnis im gesamten TYPO3-Backend zu schaffen, haben wir die Verwendung der Dateiliste auf den Elementbrowser ausgeweitet. Dies ist die eingebaute Komponente, in der Redakteure ein Inhaltselement mit Assets aus der Datei-/Ordnerliste verknüpfen.
Backend-Benutzer, die die traditionelle Listenansicht von Assets bevorzugen, können einfach zwischen den beiden Ansichtsmodi wechseln. Zur Vervollständigung der Benutzererfahrung berücksichtigt die Suchfunktion im Dateibrowser jetzt den aktuell ausgewählten Ordner und seine Unterordner.
Aufbewahrungszeit für gelöschte Datensätze
Wenn Backend-Benutzer Datensätze wie Inhaltselemente oder Seiten löschen, markiert TYPO3 diese Datensätze als gelöscht, entfernt die Daten aber nicht sofort aus der Datenbank. Mit dieser Funktion können Benutzer und Administratoren gelöschte Datensätze wiederherstellen, zum Beispiel mit dem Backend-Modul Web ➜ Recycler. Sie möchten die gelöschten Datensätze jedoch nicht dauerhaft in der Datenbank speichern. Die Systemerweiterung "TYPO3 CMS Lowlevel" und ihr CLI-Befehl "cleanup:deletedrecords" haben in solchen Situationen gute Dienste geleistet.
In TYPO3 12.3 haben wir die Funktion um die neue Option "--min-age" erweitert, mit der Administratoren ein Mindestalter festlegen können. Mit dieser Option löscht der Befehl nur Einträge, die seit mindestens x Tagen als gelöscht markiert sind.
Dies scheint eine kleine Änderung zu sein, aber die Auswirkungen auf das Geschäft können enorm sein. Mit dieser Option können Sie nun den Bereinigungsprozess so oft ausführen, wie Sie möchten, und gleichzeitig die Richtlinien zur Datenaufbewahrung einhalten.
Extbase Änderungen
Mit der Weiterentwicklung von TYPO3 wird auch das Programmier-Framework "Extbase" weiterentwickelt. Die folgenden zwei wesentlichen Änderungen betreffen TYPO3-Entwickler.
Magische Methoden
Seit Jahren gibt es sogenannte Magic Functions, mit denen Entwickler über Funktionsaufrufe Daten aus Repository-Klassen abrufen können. Das Besondere an diesen Funktionen ist, dass ihre Methoden erst zur Laufzeit definiert werden. Wenn Sie beispielsweise einen Benutzerdatensatz anhand seines Vornamens suchen möchten, können Sie die Repository-Funktion findByFirstname() aufrufen. Wenn Sie keine Methode mit diesem Namen implementieren, ermittelt Extbase automatisch die benötigte Funktionalität. Die Repository-Klasse leitet den Eigenschaftsnamen $firstname aus dem nach findBy angegebenen Begriff ab. Da Sie beliebige Namen wie findByLastname(), findByLocation(), findByVersion(), etc. verwenden können, sind diese magischen Methoden bequem und sparen Entwicklungszeit.
Allerdings haben diese magischen Methoden auch erhebliche Nachteile. Die meisten Entwickler verwenden heutzutage eine integrierte Entwicklungsumgebung (IDE) für ihre Programmierarbeit. Diese IDEs können die Namen der magischen Methoden nicht auflösen und warnen den Benutzer fälschlicherweise vor ungültigem Code. Weitere Probleme sind Typdeklarationen, die nicht möglich sind, und statische Codeanalysen, die magische Methoden nicht richtig analysieren können.
Aus diesem Grund haben wir in TYPO3 Version 12.3 einen neuen Satz von Methoden eingeführt. Die folgenden Funktionen bieten die gleiche Funktionalität wie die magischen Methoden, lösen die oben genannten Probleme und koexistieren vorerst mit den alten Methoden:
findBy(array $kriterium, ...) findOneBy(array $kriterium, ...) count(array $criteria, ...)
Zusätzlich erlauben die neuen Methoden mehrere Vergleiche (genannt "constraints") und ihre Namen folgen der Namenskonvention des objekt-relationalen Mappers Doctrine ORM.
Wir wissen, dass magische Methoden in vielen TYPO3-Erweiterungen, die auf Extbase basieren, weit verbreitet sind. Deshalb haben wir die alten Methoden in TYPO3 v12 als deprecated markiert, werden sie aber in v12 und v13 beibehalten. Diese ungewöhnlich lange Deprecation-Periode gibt Entwicklern genügend Zeit, ihren Code auf die neuen Methoden umzustellen.
Reflection unterstützt nun Union-Typen
Die zweite wesentliche Verbesserung von Extbase betrifft die Reflection API. Viele moderne PHP-Frameworks wie Extbase analysieren den Programmcode, suchen nach bestimmten Schlüsselwörtern und generieren neuen Code, der zusätzliche Funktionalität implementiert. Code-Annotationen in Doc-Blöcken sind ein typisches Beispiel für Reflection, Datentypen von Properties ein anderes.
Seit PHP Version 8.0 ist es möglich, mehrere Typen von Eigenschaften, Argumenten und Rückgabetypen zu deklarieren (z.B. "string|int"). Diese Deklarationen werden Union-Typen genannt und können in PHPDoc-Kommentaren jede @var-, @param- und @return-Deklaration ersetzen.
Seit TYPO3 Version 12.3 erkennt und unterstützt Extbase Union-Type-Deklarationen für Entity-Eigenschaften. Das entsprechende Changelog beschreibt einige weitere Fakten zum Property Mapping.
TypoScript und Page TSconfig
Das TYPO3 Core Team hat viel Energie in die Überarbeitung der TypoScript- und Page TSconfig-Funktionen investiert. Das Ergebnis ist ein neuer TypoScript-Syntax-Parser, der erstaunlich schnell, robust und logisch ist. Der Nachteil ist, dass einige Syntax-Änderungen Ihre TYPO3-Site kaputt machen können, wenn Sie auf v12 aktualisieren. Keine Sorge, die meisten Websites werden weiterhin funktionieren, und wir haben die Migrationsschritte für die Grenzfälle im Changelog ausführlich dokumentiert. Wir sind sicher, dass TYPO3-Installationen von den erheblichen Verbesserungen profitieren werden.
Möglicherweise haben Sie bereits in früheren v12 Sprint-Releases einige Backend-UI-Änderungen in dieser Hinsicht bemerkt. Alles, was mit TypoScript im Frontend zu tun hat, befindet sich jetzt im Modul Site Management ➜ TypoScript (früher: Web ➜ Template). Integratoren sollten auf jeden Fall einen Blick in dieses Modul werfen und sich mit seinen Untermodulen vertraut machen.
Zum Beispiel:
- TypoScript-Datensatz bearbeiten (früher: "Info / Bearbeiten")
- Aktives TypoScript (bisher: "TypoScript-Objekt-Browser")
- Eingebettetes TypoScript (bisher bekannt als "Template Analyzer")
Das zweite neue Modul in diesem Bereich ist Site Management ➜ Page TSconfig (bisher: Web ➜ Info ➜ Page TsConfig).
Der neue Standort des Page TSconfig-Moduls und sein neues Aussehen, das mit dem TypoScript-Modul optimiert wurde, helfen Integratoren und Website-Administratoren bei der Verwaltung, Überprüfung und Fehlerbehebung der Backend-Benutzeroberfläche und ihres Verhaltens.
Feature Freeze / Fertigstellung
Mit der Veröffentlichung der TYPO3-Version 12.3 wird der Feature Freeze für den v12-Zyklus eingeläutet. Bis zum LTS-Release im April 2023 sind keine neuen Features mehr geplant. Das bedeutet, dass sich das Core-Team und die Mitwirkenden von nun an bis zum letzten LTS-Release auf das Testen, Polieren und Verfeinern des Quellcodes und der Benutzeroberfläche konzentrieren. Einige Ausnahmen werden es ermöglichen, die kürzlich hinzugefügten neuen Funktionen zu vervollständigen oder zu verbessern.
Entwickler von Extensions sollten sich die Änderungen und Verbesserungen in allen TYPO3 v12 Sprint Releases ansehen.
TYPO3 v12.3 ist das letzte Release vor TYPO3 v12 LTS (Long Term Support) im April 2023. Jetzt ist der perfekte Zeitpunkt für Extension-Entwickler, ihre Extensions zu überprüfen und zu testen und die Code-Basis zu aktualisieren, um TYPO3 v12 zu unterstützen.
Je mehr Extensions mit TYPO3 v12 kompatibel sind, desto wahrscheinlicher ist es, dass das LTS-Release von der Community angenommen und installiert wird. Sie können dazu beitragen, die Akzeptanz des kommenden TYPO3 v12 LTS-Releases zu maximieren, indem Sie eine kompatible Extension vor dem Release veröffentlichen.
Viele TYPO3-Integratoren sind gespannt auf das neue Release und seine Vorteile. Sie können von den Verbesserungen profitieren und ihre bestehenden TYPO3-Websites auf v12 aktualisieren.
Systemvoraussetzungen, Support und Wartung
Die Systemvoraussetzungen für TYPO3 Version 12.3 bleiben unverändert wie im Artikel "Get Ready for TYPO3 v12" beschrieben. Dazu gehört z.B. PHP Version 8.1. Auch unser Support- und Wartungsversprechen bleibt unverändert. Lesen Sie mehr über die Voraussetzungen und Abhängigkeiten auf get.typo3.org.
Download und Installation
Auf get.typo3.org finden Sie alle Details zum Release und wie Sie TYPO3 herunterladen und installieren können. Detaillierte Installationsanweisungen sind in der Installationsanleitung dokumentiert. Wir empfehlen die Verwendung des Composers, um Ihre TYPO3-Umgebung einzurichten.
Was kommt als nächstes?
Die Veröffentlichung von TYPO3 Version 12.4 - dem Long-Term-Support-Release TYPO3 v12 LTS - ist für den 25. April 2023 geplant. Trotz des Feature Freeze-Status von TYPO3 arbeiten wir noch an einigen Aufgaben, um die geplanten Features zu vervollständigen. Zum Beispiel das Backend-Modul zur Überprüfung von konfigurierten CSP-Regeln und Verstößen.
Achten Sie auf die Ankündigung von Release-Partys und ähnlichen Veranstaltungen. Es wird wahrscheinlich Online-Events, Demos, Vorträge und Partys (virtuell und real) geben.