GetBlockHtml ('formkey') nedir?


19

Magento'daki ürün düzenleme sayfasını (ilk sekme) düzenlemeye çalışıyorum ve miktarını (ve diğer birkaç şeyi) ilgili sekmelerden ilk sayfaya taşımak istiyorum. anlıyorum

<form action="<?php echo $this->getSaveUrl() ?>" method="post" id="product_edit_form" enctype="multipart/form-data">
<?php echo $this->getBlockHtml('formkey')?>
<div style="display:none"></div>
</form>

ve miktar metin kutusunun kodunun

    <tr>
        <td class="label"><label for="inventory_qty"><?php echo Mage::helper('catalog')->__('Qty') ?><span class="required">*</span></label></td>
        <td class="value">
            <?php if (!$_readonly):?>
            <input type="hidden" id="original_inventory_qty" name="<?php echo $this->getFieldSuffix() ?>[stock_data][original_inventory_qty]" value="<?php echo $this->getFieldValue('qty')*1 ?>"/>
            <?php endif;?>
            <input type="text" class="input-text required-entry validate-number" id="inventory_qty" name="<?php echo $this->getFieldSuffix() ?>[stock_data][qty]" value="<?php echo $this->getFieldValue('qty')*1 ?>" <?php echo $_readonly;?>/>
        </td>
        <td class="value scope-label"><?php echo Mage::helper('adminhtml')->__('[GLOBAL]') ?></td>
    </tr>

İlk sekmenin kodunun nerede olduğunu bilen var mı? Formkey ile bir ilgisi var mı?

Teşekkürler!

Yanıtlar:


43

Magento'daki form anahtarları, Siteler Arası İstek Sahteciliğine karşı önlemenin bir yoludur - Ashley Schroder tarafından mükemmel bir şekilde açıklanmıştır , ancak kısaca, diğer sitelerin formlarına (alışveriş sepetine ekle gibi) posta göndermeye çalışan kişilerden sizi güvende tutmaktır. sen.

Bu tehlikeli olabilir çünkü birisi teorik olarak kendi formunu oluşturabilir ve siz farkında olmadan 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.

Peki ne yapar <?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.

HTH!


Bu kesinlikle ne yaptıklarını açıklıyor ve size çok teşekkür ediyorum. Şimdi hala bu miktarı <tr> ürün düzenleme ilk sekmesine nasıl ekleyeceğimi anlamaya çalışıyorum. Düşünceler? Bunu sadece üstte yapabilirim ama dahil alanlardan biri olmasını istiyorum, bu yüzden orada olması gerekiyormuş gibi görünüyor.
new2programming

Son cümle beni CSRF korumalı olmayan bazı Magento denetleyicileri olup olmadığını merak ediyor
Nick Rolando
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.