getBlockHtml( 'formkey')とは何ですか?


19

Magentoで製品編集ページ(最初のタブ)を編集しようとしていますが、数量(およびその他のいくつか)をそれぞれのタブから最初のページまで移動したいと考えています。そうですか

<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>

そして、数量テキストボックスのコードは

    <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>

誰も最初のタブのコードがどこにあるか知っていますか?formkeyと関係がありますか?

ありがとう!

回答:


43

Magentoのフォームキーは、クロスサイトリクエストフォージェリを防止する手段です- ここでAshley Schroder見事に説明しましたが、要するに、他のサイトからフォーム(カートに追加するなど)君は。

誰かが理論的に独自のフォームを作成し、気付かないうちにストア内のフォームハンドラーコントローラーアクションに投稿できるため、これは危険です。CSRF保護では、フォームポストに含まれるform_keyパラメーターのチェックに失敗したポストは基本的に無視されます。

それで、何をし<?php echo $this->getBlockHtml('formkey')?>ますか?Magentoに「formkey」という名前のレイアウトブロックを探して出力するように指示します。Magentoでは、これは通常、これを含むファイルです。

<div><input name="form_key" type="hidden" value="<?php echo Mage::getSingleton('core/session')->getFormKey() ?>" /></div>

これにより、Magentoはユーザーセッション用の一意のフォームキーを出力および保存します。CSRFで保護されたすべてのMagentoコントローラーアクションは、価値のあることを行う前にこれに対して検証します。

HTH!


まあ、それは確かに彼らが何をするのかを説明します。今、私はまだその数量<tr>を製品編集の最初のタブに入れる方法を見つけようとしています。考え?私はそれを一番上で行うことができますが、含まれているフィールドの1つにしたいので、そこにあるはずだったように見えます。
new2programming 14年

最後の文は、CSRFで保護されていないMagentoコントローラーがあるかどうか疑問に思うo_O
Nick Rolando
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.