31 Protección contra ataque en tus FORMULARIOS WEB en la PLATAFORMA con (LARAVEL y MYSQL) FULLSTACK
Duración: 8 minDescripción
🛡️ Lección 31: Protección Contra Ataques en Formularios Web con CSRF
Esta lección avanzada se centra en la implementación de una medida de seguridad crucial en Laravel para proteger los formularios web de ataques maliciosos, asegurando que los datos provengan de un usuario legítimo y no de un script automatizado.
1. 🛑 El Error de Seguridad 419 [00:48]
- Identificación del Problema: Al enviar el formulario de registro de películas (por método POST), el sistema devuelve el Error 419 (Page Expired).
- Causa: Laravel está diseñado para rechazar cualquier solicitud POST que no contenga un token de seguridad válido. Este es un mecanismo de defensa contra el Cross-Site Request Forgery (CSRF).
- Objetivo de Laravel: Prevenir que bots o scripts externos envíen información basura a la base de datos [02:16].
2. 🔑 Solución: Implementación del Token CSRF [01:00]
Para proteger el formulario y permitir que Laravel lo procese, se debe incluir la directiva Blade @csrf dentro de la etiqueta <form>:
- Directiva Blade: Se agrega @csrf en la vista create.blade.php [01:17].
Función del Token: Al cargar la página, la directiva @csrf genera un campo input oculto (type="hidden") con un valor de token único. Este token es el que Laravel utiliza para validar que la solicitud es legítima [03:12].
HTML
<input type="hidden" name="_token" value="[código-token-único]">
- Resultado: Al registrar la película nuevamente, el formulario se envía con éxito al método store() del controlador [02:56].
3. 📤 Preparación de Datos en el Controlador (store()) [04:00]
Se configura el método store() del PeliculasController para recibir y verificar los datos enviados desde el formulario.
- Recepción de Datos: Se utiliza la variable $request (objeto Request) para acceder a toda la información enviada [04:22].
- La función $request->all() captura todos los campos del formulario, incluyendo el token CSRF [04:32].
- Verificación Inicial: Para inspeccionar los datos recibidos, se utiliza el retorno en formato JSON (response()->json($datos)) [04:56].
4. 🏷️ Asignación de Nombres (name) a los Inputs [05:18]
Inicialmente, el JSON de retorno no contenía los valores de los campos. Esto se corrige asegurando que cada campo de entrada del formulario tenga un atributo name que coincida con el nombre de la columna en la base de datos.
- Corrección: Se asigna el atributo name a los inputs y textareas (ej. name="titulo_p", name="descripcion_p", etc.) [05:47].
- Resultado Final: Al volver a enviar el formulario, el controlador muestra un JSON completo con todos los datos listos para ser guardados, incluyendo el token CSRF, el título, la categoría y los links de los servidores [07:01].
El siguiente paso será utilizar estos datos dentro del método store() para realizar la inserción real en la tabla de la base de datos [07:50].
Lecciones
Apoya este proyecto
Si te gusta nuestro contenido, ¡apóyanos con una donación!
Donar por Airtm Donar por Binance¡Gracias por tu apoyo! ❤️