8

Magentoのカスタムフォームを見ています。私はこれらのチュートリアルを見ました

http://fastdivision.com/2012/03/29/diy-magento-create-ajax-login-registration-forms-for-your-magento-theme/

http://inchoo.net/ecommerce/magento/magento-email/magento-custom-email-contact-form-with-notification-system/

ユーザーセッションに保存されているものでクライアントトークンをチェックするなど、CSRF防止についての言及はありませんでした。Magentoのお問い合わせフォームも確認しましたが、CSRFとは関係がないと思います。

<input type="text" name="hideit" id="hideit" value="" style="display:none !important;">

MagentoにはCSRFを防ぐためのデフォルトコードがありますか?Mage_Core_Controller_Front_Actionの$this->getRequest()-> getParams()メソッドは、CSRFが欠落しているのを防ぐために、自動的に何かを行いますか?

4

2 に答える 2

9

実際、MagentoにはフロントエンドのCSRFトークン検証メソッドがあり、カスタムフォームに一意のセッションベースのフォームキーを追加して、コントローラーのアクションで検証することができます。

フォームを送信するときにリクエストとともにCSRFフォームキーを送信する<?php echo $this->getBlockHtml('formkey') ?>には、フォームの本文にコードを挿入します。

これにより、次のような入力が生成されます<input type="hidden" value="unique16codehere" name="form_key">。キーを検証する_validateFormKey()には、それぞれのコントローラーのアクションでメソッドを使用します。

于 2014-11-22T16:45:08.950 に答える
5

バックエンド管理コンソールでページ/フォームを作成している場合を除き、エンドプログラマーユーザーが独自のCSFR/ノンス保護スキームを使用する必要があります。Magento管理コンソールアプリケーションは、デフォルトですべてのページ/URLに対してこの保護を備えています。

チェックアウト_validateSecretKeyapp/code/core/Mage/Adminhtml/Controller/Action.phpて、getSecretKeyメソッドをapp/code/core/Mage/Adminhtml/Model/Url.php。これは、フロントエンドの独自のフォームに簡単に拡張できます。

于 2012-10-18T02:18:10.553 に答える