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 Theme und soll den direkten Zugriff schädlicher Quellen auf die Datei 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?
theme-development
security
mrwweb
quelle
quelle
defined('ABSPATH') OR exit;
defined('WPINC') ? : die();
Antworten:
Normalerweise brauchst du es nicht. Aber… es gibt mindestens einen Randfall:
on
,… Kann ein Angreifer diese Datei aufrufen, die fehlenden Variablen mit
GET
oder setzenPOST
und die Themendatei zum Ausdrucken bringen. Und dann gibt es 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.
quelle