Erweiterungen gegen unbefugte Eingaben absichern

Blockdialoge, Sonderseiten und APIs nehmen Eingaben auf verschiedenen Wegen entgegen. Die entscheidenden Prüfungen erfolgen auf dem Server: Rechte, CSRF-Schutz, zulässige Werte und kontextgerechte Ausgabe. Testen Sie auch abgewiesene Anfragen.

Rechte vor der Änderung prüfen

Eine versteckte Schaltfläche schützt keine Daten. Prüfen Sie im Controller die Berechtigung der aktuellen Person und die Berechtigung für das konkrete Objekt. Ein Nutzer darf zum Beispiel eine Seite sehen, ohne deren Blöcke ändern zu dürfen. Für Express-Einträge können andere Rechte gelten als für die Seite mit dem Formular. Testen Sie Gast, berechtigte Gruppe und unberechtigte angemeldete Person getrennt. Zugriff wirklich prüfen zeigt den Test aus Verwaltungssicht.

Bei browsergebundenen POST-Aktionen validieren Sie zusätzlich einen CSRF-Token. Er verhindert einen fremd ausgelösten Request, ist aber kein Ersatz für Anmeldung oder Rechte. Der Core-Express-Controller prüft Token und Handles, bevor er ein neues Datenobjekt speichert. Nutzen Sie dieses Muster nur nach Vergleich mit Ihrer tatsächlichen Core-Version.

Die Sicherheitsrichtlinien der Verwaltung zeigen globale Einstellungen, die eigene Prüfungen im Package ergänzen.

Abbildung 1: Globale Sicherheitsoptionen entbinden eigene Formulare und Endpunkte nicht von Rechte- und Eingabeprüfung.

Eingaben validieren und Ausgaben kodieren

Prüfen Sie Pflichtfelder, Länge, Datentyp, erlaubte Werte und Beziehungen serverseitig. Ein deaktiviertes HTML-Feld oder JavaScript-Check kann umgangen werden. Kodieren Sie Text beim Rendern als HTML-Text, Attributwert oder URL jeweils passend zum Kontext. Erlauben Sie Rich Text nur mit dem dafür vorgesehenen sicheren Editor- und Filterweg. SQL-Abfragen gehören an APIs mit Parametern; zusammengesetzte Eingabestrings im SQL sind keine Validierung.

Dateiuploads brauchen Dateityp-, Größen-, Rechte- und Speicherprüfung. Ein im Dateinamen behaupteter Typ ist kein Vertrauensbeweis. Prüfen Sie außerdem, ob Dateien nach dem Upload öffentlich erreichbar sein dürfen und ob ein späteres Löschen andere Verwendungen betrifft. Dateien verwalten erklärt die geteilte Dateiverwaltung.

Fehler und externe Zugriffe begrenzen

Eine öffentliche Fehlermeldung soll die Aktion erklären, aber keine Stacktraces, Zugangsdaten oder Serverpfade zeigen. Halten Sie Logs so knapp, dass sie bei der Fehlersuche helfen, ohne sensible Formulardaten zu vervielfachen. Schalten Sie eine API erst ein, wenn Authentifizierung, Scopes, Authorization-Header und erforderliche Objektrechte geprüft sind. Schnittstellen sicher anbieten führt durch einen begrenzten Fall.

Prüfen Sie mit ungültigen Werten, fehlendem Token, ungültiger ID, Gastrolle, anderem Benutzer und doppelter Einsendung. Kontrollieren Sie dabei nicht nur die Antwort, sondern auch den Datenbestand: Nach einem abgewiesenen Request darf kein halb gespeicherter Eintrag bleiben. Wiederholen Sie den Test nach einem Core-Update und nach Änderungen an Package-Abhängigkeiten.

Weiterlesen

Quelle: Concrete CMS Dokumentation (EN) · Stand: ConcreteCMS 9.5.7