add_submenu_page hooked function muss die Benutzerfunktionen explizit überprüfen – warum?

In der Referenz für die function add_submenu_page sehe ich folgendes in der Beschreibung (Hervorhebung meins):

Diese function verwendet eine function, die verwendet wird, um zu bestimmen, ob eine Seite in dem Menü enthalten ist oder nicht.

Die function, mit der die Ausgabe der Seite abgewickelt wird, muss überprüfen, ob der Benutzer auch über die erforderliche functionalität verfügt.

Meine Frage ist: Warum ist das? Ich verstehe, dass es aus Sicherheitsgründen ist, aber ich kann mir nicht vorstellen, wie ein schlechtes Plugin, das diese function verwendet, aber diese zusätzliche Überprüfung nicht durchführt, ausgenutzt werden kann. Es sieht so aus, als würde WordPress selbst verhindern, dass die hooked-function ausgeführt wird, wenn der aktuelle Benutzer nicht über die erforderliche Fähigkeit verfügt (wie an add_submenu_page geliefert); also, was könnte schief gehen?

Solutions Collecting From Web of "add_submenu_page hooked function muss die Benutzerfunktionen explizit überprüfen – warum?"

Schuld bringt uns zu # 12101 , wo @westi das sagte:

Wir müssen auch darauf achten, dass functionen die functionalität ebenfalls prüfen und wir darum ersuchen, die Sichtbarkeit zu gewährleisten.

Das Commit, [12914] , war Teil von 3.0. Ich dachte, dass die Einschränkung beim Laden der function vielleicht erst später hinzugefügt wurde, aber anscheinend in 1.5 hinzugefügt wurde .

Meine Vermutung ist, dass @westi sich zu dem Zeitpunkt, an dem er die Dokumentation geschrieben hat, nicht daran erinnert hat. Aus diesem Grund scheinen sie darauf hinzuweisen, dass die zur Verfügung gestellte Fähigkeit nur verwendet wird, “um zu bestimmen, ob eine Seite im Menü enthalten ist oder nicht.”

Außerdem enthält WordPress ein Muster für den Code jeder Admin-Seite, der in einer separaten Datei gespeichert wird. Dadurch kann der Code ausgeführt werden, indem direkt auf die Datei zugegriffen wird. Dies bedeutet, dass ordnungsgemäße Fähigkeitsüberprüfungen besonders wichtig sind.

Abgesehen davon, gibt es keine Probleme, die entstehen könnten, wenn ich die Fähigkeiten, die ich mir vorstellen kann, nicht überprüfe. Es ist immer noch eine gute Idee, nur für den Fall (sollte die function jemals in einem anderen Kontext aufgerufen werden). Dies würde verhindern, dass es über einen Exploit von anderem Code verwendet wird, der beispielsweise eine Anfälligkeit für die Ausführung von functionen aufweist.