xsrf kali ejemplo cookie certificado csrf yii2

kali - Deshabilitar la validación CSRF para acciones individuales en Yii2



csrf token spotify (4)

He intentado esto y funcionó.

Vaya al controlador específico y escriba esto en la parte superior.

public $enableCsrfValidation = false;

¿Hay alguna forma de deshabilitar la validación CSRF para algunas acciones del controlador y mantenerlo habilitado para las otras?

En mi caso, tengo varias clases de acción configurables, que están destinadas a ser inyectadas en los controladores. No puedo pasar el token de validación csrf a la solicitud AJAX porque lo que estoy trabajando es un complemento WYSIWYG externo (hecho por mí) en la interfaz. Sí, todavía puedo desactivar la validación csrf de todo el controlador usando estas acciones, pero puede ser inseguro.


Para el controlador / acciones específicas, puede deshabilitar la validación CSRF de la siguiente manera:

use Yii; ... Yii::$app->controller->enableCsrfValidation = false;

O dentro de un controlador:

$this->enableCsrfValidation = false;

Eche un vistazo a la propiedad $enableCsrfValidation de yii/web/Controller .

Actualizar:

Aquí hay algunas especificaciones.

Si desea deshabilitar la validación CSRF para acciones individuales, debe hacerlo en el controlador de eventos beforeAction porque el token CSRF se verifica antes de que se ejecute la acción (en beforeAction de yii/web/Controller ).

/** * @inheritdoc */ public function beforeAction($action) { if ($action->id == ''my-method'') { $this->enableCsrfValidation = false; } return parent::beforeAction($action); }

Documentos oficiales:


Para mi esto es lo que funcionó

public function beforeAction($action) { if($action->id == ''my-action'') { Yii::$app->request->enableCsrfValidation = false; } return parent::beforeAction($action); }


Ponga esto dentro de su controlador, simplemente reemplace el índice con cualquier acción que desee deshabilitar csrf .

public function beforeAction() { if ($this->action->id == ''index'') { $this->enableCsrfValidation = false; } return true; }