Magento的CSRF保护(Magento CSRF protection)

2019-08-01 14:16发布

我期待在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任何默认代码? 请问这 - $> Request()方法 - > getParams Mage_Core_Controller_Front_Action()方法会自动做任何事情来阻止CSRF,我可能会丢失?

Answer 1:

这是对最终用户的程序员使用自己CSFR /现时保护方案, 除非他们创造了后端管理控制台页/表单。 Magento管理控制台应用程序在默认情况下所有的网页/网址这种保护。

查核_validateSecretKeyapp/code/core/Mage/Adminhtml/Controller/Action.phpgetSecretKey在方法app/code/core/Mage/Adminhtml/Model/Url.php 。 这可以很容易地扩展到前端自己的表单。



Answer 2:

实际上,有一个前端CSRF令牌验证 Magento中你可以使用一个独特的基于会话的形式键添加到您的自定义窗体,并在控制器的动作验证它的方法。

到与所述请求提交表单插入时发送CSRF形式键<?php echo $this->getBlockHtml('formkey') ?>代码到窗体的身体。

这将产生一个这样的输入: <input type="hidden" value="unique16codehere" name="form_key"> 。 为了验证密钥使用_validateFormKey()中的各控制器的操作方法。



文章来源: Magento CSRF protection