Was ist das Risiko?
Auf einem schlecht konfigurierten gemeinsam genutzten Host wird das PHP jedes Kunden als derselbe Benutzer ausgeführt (sagen wir apache
zur Diskussion). Dieses Setup ist überraschend häufig.
Wenn Sie auf einem solchen Host arbeiten und das Plugin mit WordPress über den direkten Dateizugriff installieren, gehören alle Ihre Plugin-Dateien dazu apache
. Ein legitimer Benutzer auf demselben Server könnte Sie angreifen, indem er ein PHP-Skript schreibt, das bösen Code in Ihre Plug-in-Dateien einfügt. Sie laden ihr Skript auf ihre eigene Website hoch und fordern deren URL an. Ihr Code wurde erfolgreich kompromittiert, da sein Skript wie apache
das Ihrer Plug-in-Dateien ausgeführt wird.
Was hat das FS_METHOD 'direct'
damit zu tun?
Wenn WordPress Dateien (wie ein Plugin) installieren muss, verwendet es die Funktion get_filesystem_method () , um zu bestimmen, wie auf das Dateisystem zugegriffen werden soll . Wenn Sie dies nicht definieren FS_METHOD
, wird eine Standardeinstellung für Sie ausgewählt, andernfalls wird Ihre Auswahl verwendet, sofern dies sinnvoll ist.
Das Standardverhalten versucht zu erkennen, ob Sie sich in einer gefährdeten Umgebung wie der oben beschriebenen befinden, und wenn es Sie für sicher hält, wird die 'direct'
Methode verwendet. In diesem Fall erstellt WordPress die Dateien direkt über PHP, wodurch sie dem apache
Benutzer gehören (in diesem Beispiel). Andernfalls wird auf eine sicherere Methode zurückgegriffen, z. B. die Aufforderung zur Eingabe von SFTP-Anmeldeinformationen und das Erstellen der Dateien nach Ihren Wünschen.
FS_METHOD = 'direct'
fordert WordPress auf, diese Risikoerkennung zu umgehen und Dateien immer mit dieser 'direct'
Methode zu erstellen .
Warum dann benutzen FS_METHOD = 'direct'
?
Leider ist die Logik von WordPress zum Erkennen einer gefährdeten Umgebung fehlerhaft und erzeugt sowohl falsch-positive als auch falsch-negative Ergebnisse. Hoppla. Der Test besteht darin, eine Datei zu erstellen und sicherzustellen, dass sie demselben Besitzer gehört wie das Verzeichnis, in dem sie sich befindet. Wenn die Benutzer identisch sind, wird PHP als Ihr eigenes Konto ausgeführt und Plugins können sicher als dieses Konto installiert werden. Wenn sie unterschiedlich sind, geht WordPress davon aus, dass PHP als gemeinsames Konto ausgeführt wird und es nicht sicher ist, Plugins als dieses Konto zu installieren. Leider sind beide Annahmen begründete Vermutungen, die häufig falsch sind.
Sie würden define('FS_METHOD', 'direct' );
in einem falsch positiven Szenario wie diesem Folgendes verwenden: Sie sind Teil eines vertrauenswürdigen Teams, dessen Mitglieder alle Dateien über ihr eigenes Konto hochladen. PHP läuft als eigener Benutzer. WordPress geht davon aus, dass dies eine gefährdete Umgebung ist und nicht standardmäßig den 'direct'
Modus verwendet. In Wirklichkeit wird es nur mit Benutzern geteilt, denen Sie vertrauen, und als solcher 'direct'
Modus ist es sicher. In diesem Fall sollten Sie define('FS_METHOD', 'direct' );
WordPress zwingen, Dateien direkt zu schreiben.