Widzę ten wiersz kodu w formularzu logowania.
<?php echo $block->getBlockHtml('formkey'); ?>
- Jaki jest z tego pożytek?
- Czy to jest bezpieczniejsze?
- Czy jest to konieczne w przypadku formularzy?
Klucze formularzy w Magento zapobiegają fałszowaniu żądań między witrynami , w skrócie, mają chronić Cię przed osobami, które próbują publikować w Twoich formularzach (np. Dodaj do koszyka) z innych stron udających Ciebie.
Może to być niebezpieczne, ponieważ ktoś może teoretycznie stworzyć własną formę i opublikować dowolną akcję kontrolera modułu obsługi formularzy w twoim sklepie. Ochrona CSRF zasadniczo ignoruje każdy post, który nie przejdzie sprawdzania dołączonego parametru form_key w formularzu post.
<?php echo $this->getBlockHtml('formkey')?>
Mówi Magento, aby szukał bloku układu o nazwie „formkey” i wyprowadził go. W Magento jest to zwykle jakiś plik, który ma to w sobie:
<div><input name="form_key" type="hidden" value="<?php echo Mage::getSingleton('core/session')->getFormKey() ?>" /></div>
To instruuje Magento, aby wyprowadził i przechował unikalny klucz formularza dla sesji użytkownika. Wszystkie działania kontrolera Magento chronione przez CSRF zweryfikują to, zanim zrobią coś wartościowego.
\Magento\Framework\Data\Form\FormKey\Validator
.Możesz dodać formkey za pomocą tego kodu:
Jeśli chcesz dodać klucz formularza do pliku phtml, użyj bezpośredniego
Używanie wstrzykiwania zależności w konstruktorze klas:
Uwaga: Nie używaj menedżera obiektów bezpośrednio w plikach phtml
źródło
ObjectManager
użycie frontendu, to nie jest dobra praktyka.Nie ma potrzeby inicjowania menedżera obiektów i wszystko, czego możesz użyć.
Frontend, którego możesz użyć:
Mam nadzieję że to pomoże!
Dzięki
źródło