TYPO3 Release 14.3.11
In der Reihe TYPO3 Release-Notizen beleuchten wir regelmäßig die wichtigsten Bug-Fixes/Security-Issues oder wichtigen Änderungen in einem neuen Patchlevel-Release. Diese Releases sind gemäß Roadmap bereits terminiert und erscheinen grob einmal im Monat.
Bugs haben je nach Projekt unterschiedliche Auswirkungen. Was in einem Projekt kritisch ist, kann in einem anderen kaum eine Rolle spielen. Unsere Gewichtung ist daher subjektiv und soll die Relevanz anderer Fixes nicht herabspielen.
Aktuelles Release
Dieses Security-Release behebt primär Sicherheitslücken in Symfony-Komponenten, Composer und NPM-Bibliotheken. Ansonsten gibt es mehrere Accessibility (a11y) Verbesserungen, Mehrsprachige IRRE-Relationen und Workspaces sowie mehr PHP 8.6 Kompatibilität.
Zudem zeigen HMENUs nun keine Links mehr zu Seiten, die durch "extendToSubpages" nicht zugreifbar wären. Defekte SiteConfigs können nun ausgewertet und dargestellt werden.
Extbase nutzt nun das neuere symfony/property-info (auf Intersection Types achten, wenn genutzt).
Camino kann mehrere Bilder im Text/Bild-Element darstellen.
Context Modal Panel kann mit Kontext-Aktionen und verschachtelten Popups umgehen.
Das TYPO3 Extension Repository (TER) ist nun via REST-API und FAIR-Integration ausgestattet.
Insgesamt gab es 179 Änderungen.
Sicherheit
- Die QR-Code-Erzeugung im Redirect-Modul nutzt nun zusätzliches Escaping. Dank Backend-CSP ist dies jedoch keine praktische Sicherheitslücke.
- Abhängigkeiten zu Symfony wurde auf 8.1.11 gesetzt um Sicherheitslücken zu beheben
TCA / Schema API / Record API
- Sehr wichtigWorkspace-aktivierte Datensätzen wurden im RelationHandler der TCA-Schema API logisch genau falsch herum ausgewertet, abhängig von der Workspace-Abhängigkeit der Kindelemente
- Die Schema API kann nun für MM-Prüfungen im DataHandler (intern) genutzt werden
- Eine unvollständige cropVariant Konfiguration mit Zugriff auf "default" nutzt nun dessen kompletten vererbte Rechte
Site Settings / Site Sets
- WissenswertDie Sprach-ID "0" wird nun immer als Default ausgeliefert, wenn vorhanden. Nur wenn diese fehlt wird die erste definierte Sprach-ID als Default genutzt.
- WissenswertDefekte Site Configs (nicht Site Sets) können nun in der Konfiguration angezeigt werden, und nicht mehr bei Fehlern den ganzen Cache und das Backend brechen. Ein zusätzliches CLI-Kommando "site:validate" ermöglicht nun auch die Validierung von Sites.
- Das Eingabefeld für eine leere Seite bzw. "genullte" Seiten-ID wird nun immer als leer dargestellt
- Site Configs für Konfigurationen ohne die Sprach-ID "0" können nun wieder angezeigt werden
EXT:form
- Bei Mehrfach-Dateiuploads können die Email-Finisher die Dateinamen nun korrekt verbinden
- Es werden nur noch ".form.yaml" Dateien im Backend ausgewertet und andere YAML-Dateien erst gar nicht mehr evaluiert (die bisher an einem zweiten Schritt erst ausgefiltert wurden)
TypoScript
API (Frontend / Extbase)
- Sehr wichtigDas "HMENU" ContentElement wertet nun zugriffsbeschränkte Seiten aufgrund von "extendToSubpages" korrekt aus, so dass Links hierzu nicht ausgegeben werden, die beim Aufruf selber gar nicht ausgegeben werden würden. Dies kann nun zu leeren Navigationen führen, wenn diese vorher so vorgesehen wurden dass Besucherinnen erst dann einen Login durchführen würden. Dies müsste nun mit "showAccessRestrictedPages" konkret explizit definiert werden, wenn dies das gewünschte Verhalten wäre.
- WissenswertExtbase-Relationsjoins werden nun mit denselben QuerySettings (und somit Visibility-Aspekten) ausgeführt, so dass JOINs keine Daten zurückliefern können die nicht mit der Sichtbarkeit des Eltern-Elements übereinstimmen.
- WissenswertKompatibilität von Extbase zu neuem symfony/property-info (für intersection types)
- WissenswertExtbase Repository "findByUid" Methoden finden nun nicht mehr unabhängige Übersetzungen zu UIDs eines Datensatzes, sondern berücksichtigen die Request-Sprache
- Wissenswert"rel=noreferrer" wird nun immer bei Seiten angewendet, die auf einen anderen Host zeigen (egal ob dieser innerhalb derselben TYPO3-Instanz liegt)
- Der DateTimeConverter fängt nun eine Fehlermeldung besser ab, wenn ein "NULL"-Byte Teil der Dateneingabe ist
- Die "MP" Mountpoint-URI-Variable im Frontend wird von cHash-Berechnung ausgenommen um weitere Validierung damit durchzuführen
- Ausschließlich MountPoints in einer Submenu-Navigation wurden nicht korrekt ausgewertet
Fluid
- Sehr wichtigFluid Pagination ermöglicht nun direkten Zugriff auf `getTotalNumberOfItems` und `getNumberOfItemsOnCurrentPage` auf einem `paginator` Objekt
- Wissenswertf:form.select ViewHelper die OHNE "multiple"-Angabe dennoch auf ein Array/Objektsammlungs-Element angewendet werden, konvertieren dies nun automatisch zu einer Liste statt nur einen Wert zu übermitteln der dann bei der Persistierung etwaige Werte überschreibt.
Content Security Policy (CSP)
Backend: UI
- WissenswertCamino zeigt nun in "Text mit Bild" Inhalten alle Bilder an statt nur das erste
- WissenswertDas GUI-gestützte Bearbeiten von backend_layouts kann nun auch die `allowedContentTypes` Liste konfigurieren
- WissenswertDas neue Context Modal kann jetzt auch Kontext-Menü-Elemente korrekt darstellen
- WissenswertDas Context Modal kann ausgeführte Aktionen von Kontext-Menüs nun im Vordergrund (in verschachtelten Modals) darstellen
- Die Datensatzsuche zeigt nun auch Ergebnisse an, wenn ein Treffer in einer (einzigen) Übersetzung gefunden wurde
- Vermeidung von doppeltem Escaping von Sonderzeichen bei "Element-Informationen"
- Das Neu-Laden der Dateiliste nach Upload erfolgt nun nur noch, wenn mindestens ein Element erfolgreich hochgeladen wurde
- Verbessere Caps-Lock Erkennung in Kombination mit Shift-Taste im Login
- Das Breadcrumb-Fokus-Highlighting in Kombination mit überlangen Labels führt nun nicht mehr zum Abschneiden der Fokus-Linie
- Die Upload-Queue in der Dateiliste wird nun um Elemente bereinigt, die bewusst übersprungen wurden
- A11y Verbesserung: Die Icons zum Drag+Drop erhalten einen vorlesbaren Prefix
- A11y Verbesserung: Icons für SelectSingle Felder werden nicht mehr vorgelesen
- A11y Verbesserung: "title" tooltips des Dateireferenzen-Pickers im Backend werden nicht mehr vorgelesen
- A11y Verbesserung: Icons für FormEngine-Fehler/Zustände sind nun vorlesbar
- A11y Verbesserung: Das "..." Kebap-Menü enthält bessere Aria-Attribute
- A11y Verbesserung für Tastaturbedienung von Modul-Menüs
- A11y Verbesserung: Elemente die ein Modal öffnen werden nach Verlassen fokussiert
- A11y Verbesserung: Das Clipboard-Panel nutzt semantische Auszeichnungen
- A11y Verbesserung: Rahmen um Buttons in der Blätterfunktion des Backends sind nun mit mehr Abstand dargestellt
- Für die Camino-BackendLayouts werden nun Icons mit ausgeliefert
- Update auf die typo3/icons 5.2.0 Bibliothek mit einigen leicht verbesserten Icons
- Der "X"-Clearing Button für das Login-Eingabefeld wurde entfernt, für bessere accessibility (SIC!)
- Das Rendering des Seiten-Trees nach Nutzung von Filter/Suchaktionen führt nun nicht mehr zu inaktiven Nodes
- Site Set Labels können jetzt auch mittels CrowdIn übersetzt werden
- Site Set Labels für Crowdin werden auf XLF-Dateien eingeschränkt
- Die Sortierung von zu sortierenden Seiten im Backend erfolgt nun auch nach Erstellungszeit
- Dem Drag+Drop Uploader können keine vollständigen Ordner mehr via Drag+Drop übermittelt werden
- Doppelklicks auf Backend-Module reagieren nun richtig
- Der Dateipicker bietet nun auch nur eine Upload-Funktion für die zugehörigen erlaubten Dateiendungen des Elements an
- Drag+Drop in Chrome kann wieder im Seitenbaum korrekt den "Ctrl/Strg"-Tastenzustand erkennen
- Die Option "Unterseiten in Baum verstecken" wird nun auch für die TCA-Typen "SysFolder" und "Trenner" angeboten, um einen unnötigen temporären Typenwechsel zum Aktivieren der Option zu vermeiden
- CSS-Bugfix für eingeklappte Backend-Modul-Liniendarstellung
- Abgebrochene HTTP FileUploads beim Austasuchen von Dateien sorgen nun nicht mehr für etwaige Überschreibungen mit leeren Daten
- Die "Zeige/Verstecke Seite in Menü" erhält ein eigenes Icon
- Wenn man von der Suche ausgehend einen Datensatz bearbeitet und schließt, landet man danach wieder in der korrekten Seite von der man ausging
- Die FormEngine-Validierung von Slug-Vorschlägen wird besser durchgeführt
- Das Flaggen-Icon für "United States Minor Outlying Islands" wird nun ausgeliefert
Backend: API / Core
- WissenswertUnidirektionale MM-Relationen bei der Überstetzung werden strikter geprüft (siehe Changelog)
- WissenswertDer PlainTextExtractor nutzt nun die FAL "getContents()" Methode, und nicht mehr eine eigene Zugriffsart die in gewissen Fällen Dateien löschen konnte.
- WissenswertDie Default-Sprache "0" nutzt nun einen "ordentlichen" internen Marker. Damit können künftige Verbesserungen identifiziert und lokalisiert werden um das Mehrsprachigkeitshändlung für die Standardsprache zu optimieren
- Der MM-RelationHandler interpretiert "tablenames" nur dann als gültige MM-Referenz, wenn der Tabellenname auch erlaubt hinterlegt wurde
- Das Kopieren eines Ordners in sich selbst erzeugt keine Rekursion mehr
- FormEngine weist im SelectSingle Element nun den Input-Namen aus, um bei synchronisierten übersetzten Elementen die Veränderbarkeit des Feldes zu verbieten
- Die Sortierungsreihenfolge von Datensätzen die nach Sprache sortiert sind, ist nun stabil über alle Datenbanksysteme hinweg
- TypeScript Typisierung von DOM Ergebnissen verbessert (Assertions)
- TypeScript ESLint Option "no-unneccessary-type-assertion" konnte nun aufgrund des obigen Patches aktiviert werden
- Das Entfernen von IRRE-Elementen-Synchronisierungskopien in einer einzelnen Sprache wurde korrigiert
- BackendUser und Install-Tool Rechtechecks nutzen nun eine einheitliche Prüfung zur Unterscheidung Admin vs. SystemMaintainer
- Die Sprachsynchronisation im DataHandler von IRRE/File-Referenzen wird nun in weiteren Sonderfällen nicht erneut durchgeführt
- Mountpoints werden im Routing bei Mehrsprachigkeit besser berücksichtigt
- Die Vorschaufunktion für die Linkgenerierung bezieht nun auch RouteDecorators korrekt ein
- Das Rückgängigmachen von Slug-Änderungen kann nun auch bei der Stapelverarbeitung mehrerer Datensätze angewendet werden
- Der ExtensionScanner erhält etwas Liebe in der PHP-Implementation
- Mountpoints werden beim Slug-Route-Building besser ausgewertet und vermeiden Redundanzen
- Der TOTP MFA-Endpunkt kann nun auch mit HTML-Entitäten ohne doppelte Kodierung umgehen
- Rekursion beim Auflösen von Datensatztiteln in gewissen Szenarien wird vermieden
- Mehr OpenOffice-Formate können nun als MIME-Types zugeordnet werden
- Das Error-Logging kann nun auch Error-Codes auswerten um die Wichtigkeit beim Logging zu erhöhen
- Besseres Handling von "virtuellen" Tabellen (wie "pages_translated") beim Datensatzzugriff im Backend
- Die FormEngine "Suggest"-Werte nutzen kein doppletes HTML-encoding mehr für eine falsche Darstellung von Sonderzeichen
- Der DataHandler kann nun zurückgesetzte Werte für INT-Spalten auch in Randfällen nicht auf einen Leerstring setzen, sondern korrekt auf die Zahl 0.
- Wenn der mailer transport_type auf den MemorySpooler gesetzt wurde, konnten Mails im Falle von Install-Tool Kontexten nicht gesendet werden
- Etwaige Fehlermeldungen bei der DataHandler-Verarbeitung von IRRE-Kindübersetzungen werden korrekt geloggt
- Der Zugriff auf Assets via SystemResource API respektiert mehr Einstellungsmöglichkeiten des Classic-Modes einer Instanz zur Auflösung von URLs
- Verbesserte Logik des AJAX-Endpunkts für Slugs bei angepassten Record-Types
- Beim kopieren von Datensätzen nach einer "Sudo"-Rechteerweiterung prüft der DataHandler diese Rechte nun sinnvoller
- Das Deaktivieren von MFA in den User-Einstellungen über den AJAX-Endpunkt funktioniert wieder
- Anpassung des Handlings von Übersetzungen der IRRE-Children
- Bessere Verarbeitung von Kategorie-Bäumen mit Startpunkt-Mounts
- Die PageLink-Erzeugung von Links mit URI-Fragmenten wertet das Routing besser aus um das Vorhandensein von URL-Parametern zu bewerten
- TypoLinks zu "fallback-Sprachen"-Links können nun genutzt werden statt nur den Linktitel anzuzeigen weil das Ziel nicht ausgelesen werden konnte ohne Overlay
- Die Performance vom PageLinkBuilder wurde verbessert indem der Site-Kontext besser durchgereicht wird
- Das Erstellen von Dateien und Verzeichnissen im Install-Tool wertet nun auch die Gruppenrechte aus und nutzt GeneralUtility-Methoden statt PHP-nativer.
- Die "Password Hashing"-Konfigurationsoptionen werden nun als bearbeitbare Felder dargestellt
- Datensätze die als "orphaned" gekennzeichnet sind, können nun erwähnt werden
Backend: API / DataHandler
- Wenn neue Datensätze nur eine einzige Sprachmöglichkeit erlauben, werden diese im DataHandler wieder korrekt verarbeitet und vollständig mit Standardwerten initialisiert
- Vermeidung von Dupletten beim Kopieren von bidreketionalen MM-Relationen
- Der DataHandler prüft Metadaten bei kopierten Dateireferenzen besser beim Einsatz von Mehrsprachigkeit und Relationen
- Der Referenz-Index von Workspace/MM-Relationen bezieht nur Liveversionen ein
- Caches werden nun auch bei fehlerhaften Records vollständig geflusht
- Bugfixes und Geschwindigkeitsverbesserungen. Spaß beiseite, es geht detailiert: Keep page tree refresh flag of nested DataHandler runs".
Backend: DBAL API
Backend: FAL API
PHP-Typfehler
- Fehlerlose Verarbeitung von "?token[]" URI Parametern im FileDumpController
- Vermeidung eines Typfehlers "Call to a member function filterFieldNames() on null" bei der Verarbeitungen von übersetzten Datensätzen derselben dataMap (DataHandler)
Backend: FormEngine - Page Wizard
Backend: Flexforms
- FlexForm Sheet-Relationen werden intern strukturierter verarbeitet
- Der DataHandler nutzt nun das FlexForm Schema für Operationen
- Leere Flexform-Sheets werden nun in ein leeres Array statt leerem String geliefert
Backend: CKEditor / RTE
- t3-Links zu Datensätzen (t3://record) können nun auch weitere Query-Argumente durchreichen
- Update auf CKEDitor5 v49 für Sicherheits-Themen in Bezug auf kostenpflichtige Addons (AI)
Backend: Extension Manager
- Sehr wichtigDas TYPO3 Extension Repository (TER) kann nun Extensions per REST TER-API auswerten
- Sehr wichtigErstmals werden die TER-Extensions mit dem neuen FAIR API-Endpunkt auslesbar gemacht
- WissenswertNutzung der neuen REST-basierten TER-API für Repository-Aktionen
- Ungültige Paket-Metadaten führen nicht mehr zu einem unsichtbaren Überspringen einer Extension, sondern werden als Warnungen geloggt
- Der Extension-Upload ist nun im Offline-Modus auch deaktiviert
- Der Extension-Manager kann nun zu "outdated" Extensions dennoch einige weitere Informationen (wie Security Issues) darstellen
Backend: EXT:workspaces / History
- MountPage mounting im Workspace Kontext mountet verschobene Mounts jetzt, ohne den Pagetree zu fällen; oder so ähnlich.
- Der PageTree wird bei relevanten Workspace-Aktionen nun stets aktualisiert
- Verschobene PageTree-Mounts in einem Workspace werden sofort verarbeitet
- Auch Datensätze mit pid=0 können nun korrekt veröffentlicht werden
- Beim Löschen eines gesamten Workspaces wird der Referenzindex korrekt aktualisiert
- Verbessere Darstellung der "von -> zu" History in Datensätzen
- Das Workspace-Icon-Overlay wird nun auch nach toggeln von Sichtbarkeit (mittels AJAX) korrekt angewendet
- Das WorkspaceEvent "IsReferenceConsideredForDependencyEvent" enthält nun weitere Metadaten
- Bessere Behandlung von gelöschten Datensätzen.
- Verbesserte Veröffentlichung von Abhängigkeiten bei OneToOne/ManyToOne Datensätzen
- Flexforms mit abhängigen Datensätzen können bei der Veröffentlichung diese gemeinsam auswerten
Backend: EXT:seo
Backend EXT:linkvalidator
Backend EXT:impexp
EXT:redirect
- WissenswertRedirects können nun auch bei "Source Host" Konfiguration für alle Site Base-Varianten geprüft werden
- "Doppelte" alte Redirects (Shadow-Kopien) werden nun auch in einer Notification für den Editor verkündet
- Redirects setzen im Frontend den SiteKontext im Request-Attribut
- Die Datensatz-Icons im Redirects-Backend sind nun auch Kontext-Menüs wie in anderen Modulen
- Der ReferenzIndex wird korrekt überarbeitet, wenn Slugs von Seiten angepasst werden
- Die "t3://" Linksyntax beim Import wird konsistenter behandelt
Strukturelles
- Vermeidung von PHP 8.6 Fehlermeldung bei callUserFunction()
- Vermeidung von PHP 8.6 Fehlermeldung im Install Tool session handler
- Vermeidung von PHP 8.6 Fehlermeldung in SORT-Konstante
- Vermeidung von PHP 8.6 Fehlermeldung bei leerem unserialize()
- Vermeidung von PHP 8.6 Fehlermeldungen für spl_object_hash() Aufrufe
- Vermeidung von PHP 8.6 Fehlermeldungen für spl_object_id() Aufrufe
