Ich habe festgestellt, dass in der Klasse \Magento\Backend\App\AbstractAction
(dem Vorfahren jeder Admin-Controller-Aktion) ein Mitglied namens aufgerufen _publicActions
wird, das bei der Validierung des geheimen Schlüssels wie folgt verwendet wird:
if (is_array($this->_publicActions) && in_array($this->getRequest()->getActionName(), $this->_publicActions)) {
return true;
}
Dies bedeutet, dass Sie, wenn ein bestimmter Aktionsname in aufgeführt _publicActions
ist, ohne den geheimen Schlüssel in der URL auf die Aktion zugreifen können.
Dies ist ein Segen für die Entwicklung und das Debuggen, da Sie dies einfach ROOT/admin/module/controller/action
manuell tun können , ohne den geheimen Administratorschlüssel kennen zu müssen. Ich verstehe jedoch nicht, warum ich ohne den geheimen Schlüssel auf die Produktbearbeitungsseite zugreifen kann.
Rufen Sie einfach eine Produktbearbeitungsseite wie diese auf ROOT/admin/catalog/product/edit/id/{product_id_here}
.
Das publicActions
Mitglied wird für Bestellungen (die Indexierung und Anzeige ermöglichen), in Produkten (zur Bearbeitung) und im Redirect-Controller für Weiterleitungen überschrieben.
Nun meine Frage:
Warum sind nur einige Bearbeitungsaktionen ohne den geheimen Schlüssel zulässig und wann / was sollte ich in meinen benutzerdefinierten CRUD-Modulen ohne den geheimen Schlüssel zulassen?
quelle
Wenn ich raten müsste, würde ich sagen, dass der geheime Schlüssel als Teil des in Magento integrierten CSRF- und / oder XSS-Schutzes verwendet werden kann. Für Seiten, deren Inhalt nicht aufgrund von Benutzereingaben geändert wird, ist es möglicherweise nicht erforderlich, den geheimen Schlüssel dort zu haben.
Anders gesagt, nur Aktionen, die vom Benutzer bereitgestellte Daten / Eingaben empfangen, werden mit einem geheimen Schlüssel geschützt. Nur eine Vermutung.
quelle