Я рассматриваю пользовательские формы в Magento. Я видел эти уроки
http://fastdivision.com/2012/03/29/diy-magento-create-ajax-login-registration-forms-for-your-magento-theme/
Magento – Custom email contact form with notification system
Я не видел упоминания о предотвращении CSRF, например, проверял токен клиента с сохраненным в сеансе пользователя. Я также посмотрел в форме Magento Contact Us и увидел это, но я не думаю, что это относится к CSRF:
<input type="text" name="hideit" id="hideit" value="" style="display:none !important;">
Есть ли у Magento код по умолчанию для предотвращения CSRF? Использует ли метод $ this-> getRequest () -> getParams () Mage_Core_Controller_Front_Action что-либо автоматически, чтобы предотвратить CSRF, который может отсутствовать?
Конечный пользователь программиста должен использовать собственную схему защиты CSFR / nonce, если только они не создают страницу / форму в консоли администратора. По умолчанию консольное приложение Magento имеет эту защиту для всех своих страниц / URL-адресов.
Проверьте _validateSecretKey
в app/code/core/Mage/Adminhtml/Controller/Action.php
и метод getSecretKey
в app/code/core/Mage/Adminhtml/Model/Url.php
. Это может быть легко распространено на ваши собственные формы на интерфейсе.
На самом деле существует метод проверки подлинности маркера CSRF с интерфейсом в Magento, который вы можете использовать для добавления уникального ключа формы на основе сеанса в свою настраиваемую форму и проверки его в действии контроллера.
Чтобы отправить ключ формы CSRF с запросом при отправке формы, вставьте форму <?php echo $this->getBlockHtml('formkey') ?>
В тело формы.
Это создаст такой ввод: <input type="hidden" value="unique16codehere" name="form_key">
. Чтобы проверить ключ, используйте метод _validateFormKey()
в действии соответствующего контроллера.