Zugriffskontrolle im Code
Diese Seite ist für Anwendungsentwickler, die dafür sorgen, dass jeder Benutzer nur sieht und tut, was seine Rollen erlauben. Der Kernel prüft die Modulfunktion, bevor eine Ansicht läuft; alles Feinere ist Aufgabe Ihres Codes (Richtlinienfunktionen und Einschränkungen).
Inhalt
- Wer ist der Benutzer?
- Drei Ebenen von Prüfungen
- Hintergrundarbeit
- Integrationsbenutzer
- Entscheidungen festhalten
Wer ist der Benutzer?
$user = eZUser::currentUser();
if ( !$user->isRegistered() ) { /* anonymous */ }
$userID = eZUser::currentUserID();In Web-Anfragen kommt der Benutzer aus der Sitzung oder aus einem API-Zugangsnachweis; in Skripten, Cronjobs und Workern ist er anonym, solange der Code keinen Benutzer anmeldet.
Drei Ebenen von Prüfungen
| Ebene | Prüfung | Beispiel |
|---|---|---|
| Funktion | die functions der Ansicht in module.php oder hasAccessTo( 'expdemo', 'manage' ) | darf dieser Benutzer überhaupt verwalten? |
| Einschränkung | $access['policies'] auswerten, wenn accessWord den Wert limited hat | nur in diesen Sektionen |
| Objekt | $node->canRead(), $object->canEdit(), $object->checkAccess( 'remove' ); eigene Besitzerprüfungen für Ihre Tabellen | dieses Element |
Prüfen Sie auf jeder zutreffenden Ebene, an jedem Einstiegspunkt. Eine Liste von Elementen muss dieselben Prüfungen anwenden wie ein einzelnes Element: Filtern Sie die Abfrage, statt Zeilen im Template auszublenden.
Hintergrundarbeit
- Ein Job in der Warteschlange läuft als der Benutzer, der ihn eingereiht hat (
user_idvon expqueue); prüfen Sie die Rechte als dieser Benutzer, so wie es eine Web-Anfrage täte (Warteschlangen mit expqueue). - Ein Cronjob, der Inhalte schreibt, meldet einen eigenen Benutzer an, dessen Rolle genau dafür angelegt ist.
- Lassen Sie Hintergrundarbeit nie "sicherheitshalber" als Administrator laufen: Das verdeckt Rechtefehler und macht das Audit wertlos.
Integrationsbenutzer
Legen Sie für eine Integration (einen Import, einen API-Client) einen Benutzer an, dessen Rolle nur das enthält, was die Integration braucht, eingeschränkt auf ihren Teilbaum oder ihre Sektion. Geben Sie ihm einen eigenen API-Schlüssel oder OAuth-Client, damit er sich einzeln widerrufen lässt (OAuth und API-Schlüssel).
Entscheidungen festhalten
Schreiben Sie sicherheitsrelevante Aktionen und Ablehnungen in das Prüfprotokoll, mit IDs und niemals mit Geheimnissen oder personenbezogenen Inhalten, damit Administratoren sie prüfen können (Prüfprotokoll, Audit).
Verwandte Seiten
- Richtlinienfunktionen und Einschränkungen
- Sicherheit für Anwendungen
- Rechteprüfungen bei vielen Zuweisungen
- Freie Dokumentation: Diese Seite darf unter der GNU FDL 1.3 frei kopiert, übersetzt und verbessert werden.
Werden Sie Exponential-Partner
Partner teilen ihre Informationen, stellen Mittel bereit, geben Beiträge zurück und entwickeln die Produkte mit uns, und so wächst Exponential. Eine Partner-Website und ein Dashboard sind für Mitte 2027 geplant: Werden Sie noch heute Partner, damit wir schneller wachsen und neue Funktionen früher liefern.