php - Protección Magento CSRF
laravel get token csrf (2)
Estoy buscando formularios personalizados en Magento. Vi estos tutoriales
No vi ninguna mención de prevención de CSRF, como verificar un token de cliente con uno almacenado en una sesión de usuario. También busqué en el formulario de contacto de Magento y lo vi, pero no creo que se relacione con CSRF:
<input type="text" name="hideit" id="hideit" value="" style="display:none !important;">
¿Magento tiene algún código predeterminado para prevenir CSRF? ¿El método $ this-> getRequest () -> getParams () de Mage_Core_Controller_Front_Action hace algo automáticamente para evitar CSRF que me puede estar perdiendo?
El usuario final del programador debe usar su propio esquema de protección CSFR / nonce, a menos que esté creando una página / formulario en la consola administrativa de back-end. La aplicación de consola de administración de Magento tiene esta protección para todas sus páginas / URL de manera predeterminada.
Consulte _validateSecretKey
en la app/code/core/Mage/Adminhtml/Controller/Action.php
y el método getSecretKey
en la app/code/core/Mage/Adminhtml/Model/Url.php
. Esto podría extenderse fácilmente a sus propios formularios en la interfaz.
En realidad, hay un método de validación de token CSRF de frontend en Magento que puede usar para agregar una clave de formulario única basada en sesión a su formulario personalizado y validarlo en la acción del controlador.
Para enviar una clave de formulario CSRF con la solicitud al enviar un formulario, inserte el código <?php echo $this->getBlockHtml(''formkey'') ?>
En el cuerpo del formulario.
Esto generará una entrada como esta: <input type="hidden" value="unique16codehere" name="form_key">
. Para validar la clave, use el método _validateFormKey()
en la acción del controlador respectivo.