• Introducción
  • Excluyendo URI
  • Token X-CSRF
  • Token X-XSRF

Introducción

Laravel facilita la protección de su aplicación de falsificación de solicitud entre sitios (CSRF) ataques. Las falsificaciones de solicitudes entre sitios son un tipo de exploit malicioso mediante el cual se ejecutan comandos no autorizados en nombre de un usuario autenticado.

Laravel genera automáticamente un “token” CSRF para cada sesión de usuario activa administrada por la aplicación. Este token se usa para verificar que el usuario autenticado es el que realmente hace las solicitudes a la aplicación.

Siempre que defina un formulario HTML en su aplicación, debe incluir un campo de token CSRF oculto en el formulario para que el middleware de protección CSRF pueda validar la solicitud. Puede utilizar el @csrf Directiva Blade para generar el campo token:

<form method="POST" action="/profile">
    @csrf
    ...</form>

El VerifyCsrfTokenmiddleware, que se incluye en el web grupo de middleware, verificará automáticamente que el token en la entrada de la solicitud coincide con el token almacenado en la sesión.

Tokens CSRF y JavaScript

Al crear aplicaciones impulsadas por JavaScript, es conveniente que su biblioteca HTTP de JavaScript adjunte automáticamente el token CSRF a cada solicitud saliente. De forma predeterminada, la biblioteca HTTP de Axios proporcionada en el resources/js/bootstrap.js el archivo envía automáticamente un X-XSRF-TOKEN encabezado usando el valor del cifrado XSRF-TOKEN Galleta. Si no está utilizando esta biblioteca, deberá configurar manualmente este comportamiento para su aplicación.

Excluir URI de la protección CSRF

A veces, es posible que desee excluir un conjunto de URI de la protección CSRF. Por ejemplo, si está utilizando Raya para procesar pagos y están utilizando su sistema de webhook, deberá excluir la ruta del controlador de webhook de Stripe de la protección CSRF, ya que Stripe no sabrá qué token CSRF enviar a sus rutas.

Por lo general, debe colocar este tipo de rutas fuera del web grupo de middleware que el RouteServiceProvider se aplica a todas las rutas en el routes/web.php Archivo. Sin embargo, también puede excluir las rutas agregando sus URI al $except propiedad de la VerifyCsrfToken middleware:

namespaceAppHttpMiddleware;useIlluminateFoundationHttpMiddlewareVerifyCsrfTokenas Middleware;classVerifyCsrfTokenextendsMiddleware/**
     * The URIs that should be excluded from CSRF verification.
     *
     * @var array
     */protected$except=['stripe/*','http://example.com/foo/bar','http://example.com/foo/*',];

El middleware CSRF se desactiva automáticamente al ejecutar pruebas.

X-CSRF-TOKEN

Además de comprobar el token CSRF como parámetro POST, el VerifyCsrfToken El middleware también comprobará el X-CSRF-TOKEN encabezado de solicitud. Podría, por ejemplo, almacenar el token en un HTML meta etiqueta:

<meta name="csrf-token" content=" csrf_token() ">

Luego, una vez que haya creado el meta etiqueta, puede indicar a una biblioteca como jQuery que agregue automáticamente el token a todos los encabezados de solicitud. Esto proporciona una protección CSRF simple y conveniente para sus aplicaciones basadas en AJAX:

$.ajaxSetup(
    headers:'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content'));

X-XSRF-TOKEN

Laravel almacena el token CSRF actual en un cifrado XSRF-TOKEN cookie que se incluye con cada respuesta generada por el marco. Puede utilizar el valor de la cookie para configurar el X-XSRF-TOKEN encabezado de solicitud.

Esta cookie se envía principalmente para su conveniencia, ya que algunos marcos y bibliotecas de JavaScript, como Angular y Axios, colocan automáticamente su valor en el X-XSRF-TOKEN encabezado en solicitudes del mismo origen.

Por defecto, el resources/js/bootstrap.js El archivo incluye la biblioteca HTTP de Axios que se lo enviará automáticamente.