Ich sehe diese Codezeile im Anmeldeformular.
<?php echo $block->getBlockHtml('formkey'); ?>
- Was nützt es?
- Ist es sicherer?
- Ist es ein Muss für Formularpost?
Formularschlüssel in Magento sind ein Mittel gegen Cross Site Request Forgery , kurz gesagt, um Sie vor Leuten zu schützen, die versuchen, auf Ihren Formularen (z. B. in den Warenkorb) von anderen Sites aus zu posten, die sich als Sie ausgeben.
Dies kann gefährlich sein, da theoretisch jemand sein eigenes Formular erstellen und auf einer beliebigen Handler-Controller-Aktion in Ihrem Geschäft posten könnte. Der CSRF-Schutz ignoriert im Wesentlichen alle Posts, bei denen die Prüfung des enthaltenen form_key-Parameters mit dem Formularpost fehlschlägt.
<?php echo $this->getBlockHtml('formkey')?>
Magento wird angewiesen, nach einem Layoutblock mit dem Namen "formkey" zu suchen und diesen auszugeben. In Magento ist dies normalerweise eine Datei, die folgendes enthält:
<div><input name="form_key" type="hidden" value="<?php echo Mage::getSingleton('core/session')->getFormKey() ?>" /></div>
Dies weist Magento an, einen eindeutigen Formularschlüssel für eine Benutzersitzung auszugeben und zu speichern. Alle CSRF-geschützten Magento-Controller-Aktionen werden daraufhin überprüft, bevor etwas Wertvolles getan wird.
\Magento\Framework\Data\Form\FormKey\Validator
.Mit diesem Code können Sie einen Formularschlüssel hinzufügen:
Wenn Sie einen Formularschlüssel in eine HTML-Datei einfügen möchten, verwenden Sie direct
Verwenden von Dependency Injection in Ihrem Klassenkonstruktor:
Hinweis: Verwenden Sie den Objektmanager nicht direkt in HTML-Dateien
quelle
ObjectManager
Verwendung im Frontend vorzuschlagen. Dies ist keine gute Praxis.Es ist nicht erforderlich, den Objekt-Manager zu initialisieren, und Sie können alles verwenden.
Frontend, das Sie verwenden können:
Hoffe das hilft!
Vielen Dank
quelle