Yanıtlar:
Magento'daki form anahtarları , Siteler Arası İstek Sahteciliğine karşı önlemenin bir yoludur, kısacası, sizin gibi poz veren diğer sitelerden formlarınıza (sepete ekle gibi) posta göndermeye çalışan kişilerden sizi güvende tutmaktır.
Bu tehlikeli olabilir çünkü birisi teorik olarak kendi formunu oluşturabilir ve mağazanızdaki herhangi bir form işleyicisi denetleyici eylemine gönderebilir. CSRF koruması, form formuyla birlikte verilen form_key parametresini denetleyemeyen tüm postaları yok sayar.
<?php echo $this->getBlockHtml('formkey')?>
Magento'ya "formkey" adında bir yerleşim bloğu aramasını ve çıktısını almasını söyler. Magento'da bu genellikle içinde bulunan bazı dosyalardır:
<div><input name="form_key" type="hidden" value="<?php echo Mage::getSingleton('core/session')->getFormKey() ?>" /></div>
Bu, Magento'ya bir kullanıcı oturumu için benzersiz bir form anahtarı çıkışı ve saklama talimatı verir. CSRF korumalı tüm Magento denetleyici eylemleri, değerli bir şey yapmadan önce bunu doğrular.
\Magento\Framework\Data\Form\FormKey\Validator
.
Şu kodla formkey ekleyebilirsiniz:
<?php
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$FormKey = $objectManager->get('Magento\Framework\Data\Form\FormKey');
?>
//Hidden form key field after <form> tag
<input name="form_key" type="hidden" value="<?php echo $FormKey->getFormKey();?>">
Phtml dosyasına form anahtarı eklemek istiyorsanız doğrudan kullanın
$ This-> getFormKey ()
<input name="form_key" type="hidden" value="<?php echo $block->getFormKey();?>">
Sınıf yapıcısında Bağımlılık Enjeksiyonu kullanma:
protected $formKey;
public function __construct(
\Magento\Framework\Data\Form\FormKey $formKey
) {
$this->formKey = $formKey;
}
public function getFormKey()
{
return $this->formKey->getFormKey();
}
Not: Nesne yöneticisini doğrudan phtml dosyalarında kullanma
ObjectManager
kullanmayı önermeyi bırakın bu iyi bir uygulama değil.
Nesne yöneticisini başlatmanıza gerek yoktur ve hepsini kullanabilirsiniz.
window.FORM_KEY
Kullanabileceğiniz ön uç:
$block->getKey()
Bu yardımcı olur umarım!
Teşekkürler