Zum Hauptinhalt springen

Der Datei-Editor im Backend ist für Angreifer eine der bequemsten Abkürzungen zur Code-Ausführung. Ein Administrator-Account in WordPress ist standardmässig gleichbedeutend mit Code-Ausführung auf dem Server: über den Theme-/Plugin-Editor oder durch das Hochladen eines beliebigen Plugins als ZIP. Zwei Konstanten schränken das ein.

DISALLOW_FILE_EDIT

define( 'DISALLOW_FILE_EDIT', true );
  • Entfernt den Theme-Datei-Editor und den Plugin-Datei-Editor aus dem Backend.
  • Entzieht allen Benutzern die Capabilities edit_themes, edit_plugins und edit_files.
  • Keine Nebenwirkungen auf Updates. Sollte auf jeder Produktions-Site gesetzt sein.

Hinweis: Bei Block-Themes ist der klassische Theme-Editor ohnehin weitgehend durch den Site Editor ersetzt; die Konstante bleibt trotzdem sinnvoll, weil sie auch den Plugin-Editor deaktiviert.

DISALLOW_FILE_MODS

define( 'DISALLOW_FILE_MODS', true );
  • Verhindert Installation, Update und Löschen von Plugins und Themes über das Backend, ebenso Core-Updates und Sprachpaket-Updates.
  • Impliziert DISALLOW_FILE_EDIT.
  • Schaltet automatische Updates ab, deshalb braucht es einen alternativen Update-Prozess.

Geeignet, wenn Code per Git/Composer/CI ausgerollt wird oder Updates zuverlässig per WP-CLI-Cronjob laufen. Nicht geeignet, wenn niemand Updates ausserhalb des Backends einspielt; dann wird die Site schnell veraltet und unsicherer als vorher.

Kompromiss: Umgebungsabhängig setzen

if ( 'production' === getenv( 'WP_ENVIRONMENT_TYPE' ) ) {
    define( 'DISALLOW_FILE_MODS', true );
}

Updates werden auf Staging getestet und per Deployment oder WP-CLI in Produktion übertragen:

wp @prod plugin update --all --exclude=woocommerce
wp @prod core update --minor

Weitere Einschränkungen für Admins

  • DISALLOW_UNFILTERED_HTML: kein JavaScript in Inhalten.
  • Rolle „Administrator“ nur wenigen geben; für Kunden eine angepasste Rolle ohne install_plugins, activate_plugins, edit_users und promote_users.
  • WP_HTTP_BLOCK_EXTERNAL mit WP_ACCESSIBLE_HOSTS, damit Plugins nicht unkontrolliert Daten nach aussen senden.

Grenzen

Diese Konstanten verhindern Code-Ausführung über reguläre Admin-Funktionen. Gegen Schwachstellen in Plugins, die beliebige Dateien schreiben, helfen sie nur zusammen mit restriktiven Dateirechten (siehe Dateiberechtigungen und Eigentümer richtig setzen).

Weiterführende Artikel

Quellen und Dokumentation