Sie installieren eine TYPO3-Erweiterung. Sie wissen aber oft nicht, was die Erweiterung genau tut. Erstellt die Erweiterung neue Datenbanktabellen? Verbindet sich die Erweiterung mit dem Internet? Ändert die Erweiterung wichtige Programmteile von TYPO3? Heute müssen Sie dafür den gesamten Programmcode lesen. Das ist sehr schwer und dauert lange.
Das Projekt typo3-capability-manifest hat eine neue Idee.
Jede Erweiterung schreibt ihre Fähigkeiten in eine einfache Datei.
Diese Datei ist eine YAML-Datei.
Spezielle Werkzeuge prüfen diese Datei automatisch.
Die Werkzeuge vergleichen die Liste mit dem echten Code.
Die Werkzeuge berechnen auch einen Wert für das Risiko.
Die Idee kommt von einem Modell für das System WordPress.
Inhaltsverzeichnis
Überblick
Funktionen im Detail
Installation
Fazit
Überblick
Erweiterungen dürfen in TYPO3 fast alles machen. Sie können Programmteile überschreiben. Sie können Daten an andere Server senden. Sie können die Datenbank verändern. Das ist gut für die Flexibilität von TYPO3. Aber es macht die Sicherheit schwer prüfbar.
Das neue Werkzeug hilft bei diesem Problem.
Eine Datei beschreibt alle Fähigkeiten der Erweiterung.
Die Datei heißt Configuration/Capabilities.yaml.
Ein Computer vergleicht diese Liste mit dem Code.
Gibt es Unterschiede?
Dann meldet das Werkzeug einen Fehler.
Das Projekt enthält bereits Beispiele. Es gibt Listen für die 20 beliebtesten TYPO3-Erweiterungen.
Diese Erweiterung läuft mit TYPO3 Version 13.4 und Version 14. Sie läuft mit der PHP-Version 8.2 oder neuer. Das Projekt ist noch in der Testphase. Die Befehle funktionieren bereits. Aber das Dateiformat kann sich noch ändern. Die Nutzung erfolgt auf eigene Gefahr.
Funktionen im Detail
Der Aufbau der Liste
Die Datei Configuration/Capabilities.yaml zeigt, was eine Erweiterung tut:
| Fähigkeit | Bedeutung | Risikowert |
|---|---|---|
| network:outbound:any | Beliebige Verbindungen in das Internet | 5 |
| xclass:override | Überschreiben von TYPO3-Klassen | 4 |
| auth:provider | Eigene Anmeldung für Benutzer | 4 |
| database:write | Daten in die Datenbank schreiben | 3 |
| database:read | Daten aus der Datenbank lesen | 1 |
| subsystem:frontend | Nutzt die normale Anzeige von TYPO3 | 0 |
Der Risikowert ist die Summe aller Punkte. Es gibt diese Stufen für das Risiko: 0 bis 4 Punkte bedeuten ein geringes Risiko. 5 bis 9 Punkte bedeuten ein mittleres Risiko. 10 bis 14 Punkte bedeuten ein hohes Risiko. Ab 15 Punkten ist das Risiko sehr hoch.
Befehle für die Befehlszeile
| Befehl | Funktion |
|---|---|
| capability:generate | Liest den Code und erstellt einen Entwurf für die Liste |
| capability:verify | Vergleicht die Liste mit dem echten Code und zeigt Fehler |
| capability:audit | Erstellt einen genauen Bericht über alle Fehler |
| capability:policy-check | Prüft alle Erweiterungen auf der Internetseite gegen die Regeln |
Sicherheitsregeln für die Internetseite
Das Team bestimmt die Regeln in einer Datei.
Diese Datei heißt config/capability-policy.yaml.
Hier steht, welche Fähigkeiten erlaubt sind.
Hier steht auch, wie hoch das Risiko sein darf.
vendor/bin/typo3 capability:policy-check
# -> Zeigt alle Erweiterungen mit FehlernIn den Regeln gibt es Listen mit erlaubten Funktionen. Es gibt auch Listen mit verbotenen Funktionen. Es gibt einen maximalen Risikowert. Erweiterungen dürfen diesen Wert nicht überschreiten. Verletzen Erweiterungen diese Regeln? Dann meldet das Werkzeug einen Verstoß gegen die Regeln.
Pläne für die Zukunft
Das Projekt ist noch neu. Diese Funktionen planen wir für die Zukunft:
Eine Übersicht im TYPO3-Backend
Schutz beim Installieren
Infos im Verzeichnis für Erweiterungen
Installation
composer config repositories.typo3-capability-manifest vcs https://github.com/dirnbauer/typo3-capability-manifest.git
composer require webconsulting/typo3-capability-manifest:@devHäufige Fragen
Fazit
Das Projekt ist noch in einem frühen Zustand. Aber es löst ein wichtiges Problem. Heute wissen wir oft nicht, was Erweiterungen tun. Diese Listen machen die Arbeit mit TYPO3 viel sicherer. Sie zeigen alle Risiken deutlich an. Sicherheitsprüfungen werden dadurch viel einfacher.
Ein ähnliches Modell funktioniert bereits gut bei WordPress. Darum ist diese Idee auch für TYPO3 sehr nützlich.
Die Idee kommt von dem Modell für WordPress. Wir danken der TYPO3-Gemeinschaft für die Hilfe. Das Projekt ist freie Software unter der Lizenz GPL.