Magento CSRF保护

sta*_*e76 8 php security csrf magento owasp

我正在寻找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;">
Run Code Online (Sandbox Code Playgroud)

Magento有没有防止CSRF的默认代码?Mage_Core_Controller_Front_Action的$ this-> getRequest() - > getParams()方法是否自动执行任何操作以防止我可能丢失的CSRF?

zli*_*lik 9

在Magento中实际上有一个前端CSRF令牌验证方法,您可以使用该方法向自定义表单添加基于会话的唯一表单密钥,并在控制器的操作中对其进行验证.

在提交表单时,使用请求发送CSRF表单密钥,将<?php echo $this->getBlockHtml('formkey') ?>代码插入表单的正文中.

这将生成如下输入:<input type="hidden" value="unique16codehere" name="form_key">.要验证密钥_validateFormKey(),请在相应控制器的操作中使用该方法.


Ala*_*orm 5

最终程序员用户使用他们自己的CSFR/nonce保护方案,除非他们在后端管理控制台中创建页面/表单.默认情况下,Magento管理控制台应用程序对其所有页面/ URL 都有此保护.

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