wake-up-neo.net

Es lohnt sich, den direkten Zugriff auf Themendateien einzuschränken?

Von Zeit zu Zeit bin ich auf das folgende Snippet in Themes gestoßen:

if ( ! defined('ABSPATH')) exit('restricted access');

Es steht am Anfang einiger (aller?) PHP Dateien in einem Thema und soll den direkten Zugriff auf die Datei durch schädliche Quellen verhindern.

Ich sehe, dass dies nicht in Twenty Ten oder Eleven enthalten ist und ich habe es nie in der offiziellen WordPress-Dokumentation empfohlen gesehen. Es scheint mir eine gute Idee zu sein, aber ich weiß auch nicht genug über Sicherheit, um es beurteilen zu können, und kann bei Google nicht viel finden.

Ist das etwas, was ich in meinen benutzerdefinierten Designs haben sollte? Wenn ja, sollte es in allen PHP Dateien sein oder nur in einigen?

31
mrwweb

Normalerweise brauchen Sie es nicht. Aber… es gibt mindestens einen Edge-Fall:

  • Wenn eine Designdatei eine Vorlage ist part ,
  • und verwendet globale Variablen aus dem aufrufenden Kontext (übergeordnete Datei),
  • und register_globals ist on,
  • und es werden nur diese Variablen ohne Sicherheitsprüfung verwendet ...

… Kann ein Angreifer diese Datei aufrufen, die fehlenden Variablen mit GET oder POST setzen und die Themendatei zum Ausdrucken bringen. Und dann gibt es ist ein Sicherheitsproblem.

Also… die beste Option ist nicht eine Kontextprüfung wie in Ihrem Beispiel, sondern ein guter Code: Vermeiden Sie globale Variablen, überprüfen Sie deren Inhalt, bevor Sie sie ausdrucken.

In einigen Fällen füge ich die Kontextprüfung hinzu, wenn ich denke, dass jemand anderes meinen Code verwendet und ihn ohne Rücksicht auf die Sicherheit ändert. Es tut nicht weh.

26
fuxia