🛡️ Protección CSRF en formularios
Protege tus formularios contra ataques de tipo CSRF
CSRF (Cross-Site Request Forgery) es un ataque donde un tercero malintencionado puede enviar peticiones en nombre de un usuario autenticado. Laravel incluye protección automática usando tokens CSRF para validar que los formularios sean enviados desde tu propia aplicación.
📘 ¿Qué es CSRF?
Un ataque CSRF aprovecha la sesión activa de un usuario para ejecutar acciones no deseadas, como cambiar su contraseña o realizar compras sin su consentimiento. Laravel evita esto insertando un token único en cada formulario que se debe verificar al enviar los datos.
⚙️ Uso básico de CSRF en Blade
Para proteger un formulario en Laravel, simplemente añade la directiva @csrf dentro del
<form>:
<form action="{{ route('usuarios.store') }}" method="POST">
@csrf
<div class="mb-3">
<label for="nombre" class="form-label">Nombre:</label>
<input type="text" name="nombre" id="nombre" class="form-control" required>
</div>
<div class="mb-3">
<label for="email" class="form-label">Correo electrónico:</label>
<input type="email" name="email" id="email" class="form-control" required>
</div>
<button type="submit" class="btn btn-success">Guardar</button>
</form>
Laravel generará automáticamente un campo oculto como este:
<input type="hidden" name="_token" value="a1b2c3d4e5f6...">
🧠 Qué pasa si el token CSRF falta o es inválido
Si alguien intenta enviar un formulario sin token o con un token incorrecto, Laravel lanzará un error 419 (Page Expired):
<div class="alert alert-danger mt-5 text-center p-4 rounded">
<h2>⚠️ Error 419 - Page Expired</h2>
<p>Tu formulario no pudo ser procesado. Asegúrate de que se envíe desde nuestra aplicación.</p>
</div>
🔄 Formularios dinámicos y CSRF
Incluso si tus formularios se generan dinámicamente con Blade o componentes reutilizables,
siempre debes incluir @csrf dentro del <form>:
<x-input name="nombre" label="Nombre" type="text" />
<x-input name="email" label="Correo electrónico" type="email" />
<form action="{{ route('usuarios.store') }}" method="POST">
@csrf
<x-input name="mensaje" label="Mensaje" type="text" />
<button type="submit" class="btn btn-success">Enviar</button>
</form>
📚 En resumen:
- CSRF protege tu aplicación contra solicitudes maliciosas de terceros.
- Siempre incluye
@csrfen tus formularios Blade. - Si el token es inválido o falta, Laravel retorna error 419.
- Incluso los formularios dinámicos o componentes Blade requieren la directiva CSRF.
0 Comentarios
Si desea contactar comigo, lo puede hacer atravez deste formulario gracias