Ivan Mendez
¿como hago para poner mi pagina en mantenimiento con middleware?
Jorge Cardoso
Escribe en tu terminal:
php artisan down --message "Voy a hacer pipi" --retry=60
y para salirte de mantenimiento:
php artisan up
CSRF (Cross-site request forgery) es un tipo de ataque que consiste en que un usuario puede intentar hacer muchas peticiones en nombre de otro. Para esto Laravel genera con cada sesión un token que se usará para validar que exista el usuario en el sistema y que sea él quien está haciendo la petición. Esto también implica que no se pueden hacer peticiones desde otra app hacia el post, debe manejarse de manera interna.
Si queremos que un form pueda pasar la seguridad CSRF de Laravel, debemos agregar el helper @csrf el cual nos agrega un token.
Estamos trabajando con Middlewares los cuales son muy usados en aplicaciones web que consisten en capas que contienen el request. Cuando llega un request, éste deberá pasar por diferentes capas o filtros (middlewares) quienes al final regresarán una respuesta. Cada uno de los filtros puede detener las peticiones en caso de que algo no cumpla.
Si no se desea usar la protección CSRF se puede directamente quitar el middleware desde el archivo kernel.php. De la misma manera se pueden crear middleware propios y agregarlos aquí.
Cual sería la diferencia si coloco
return redirect(route('expense_reports.index'));
Lo probé y funciona, o da la mismo de una u otra forma?
Ivan Mendez
¿como hago para poner mi pagina en mantenimiento con middleware?
Jorge Cardoso
Escribe en tu terminal:
php artisan down --message "Voy a hacer pipi" --retry=60
y para salirte de mantenimiento:
php artisan up
Jimmy Buriticá Londoño
Les comparto el link de la documentación de CSRF desde la página oficial de ++Laravel++. https://laravel.com/docs/7.x/csrf
Enrique Devars
Gracias por el aporte :)
Gerardo Antonio Gerónimo Vasconcelos
Jansenio Gonzales Venegas
Hola amigo como hicistes para que te genere el @csrf ??
Jansenio Gonzales Venegas
Hola amigo como hicistes para que te genere el @csrf ??
Jansenio Gonzales Venegas
estoy usando visual code como puedo agregar los prefijos "key "
Mauricio Avila Beltran
Si por alguna razón se está usando una versión de laravel inferior, por ejemplo 5.0.16, que es mi caso porque tengo PHP 5.5 no funciona el helper
@csrf()
Se puede usar de forma manual de la siguiente manera
<input type="hidden" name="_token" value="{{ csrf_token() }}">
Enrique Garcia Stave
Apuntes: Para prevenir ataques de CSRF (acrónimo de Cross-Site Request Forgery), es un tipico ataque en el que el atacante hace multiples peticiones a nombre de otro atacante, por lo que Laravel trae proteccion ante este tipo de ataques a partir de un token, para ello debemos escribir dentro de la etiqueta de formulario '@csrf'. Para proceder a guardar definitivamente los datos en la base de datos, escribimos en el metodo store(): - $variableSave = new ClaseModelo(); - $variableSave->atributo = $request->get('nameFOrmulario'); - $variableSave->save(); - return redirect('/rutaDeseada'); El metodo redirect(), es para redireccionarnos a otra vista, una vez que guardemos los datos. Los middleware son capas que contienen al request y lo validan, cuando llega algun tipo de request, este tiene que pasar por multiples filtros para llegar a su destino (response). Cualquiera de estos filtros puede detener las peticiones.
Luis Antonio
efectivamente lo que comenta kike es correcto, según el video en las funciones :
David Andrés Rincón Suárez
Vale la pena aclarar que si estamos utilizando Form::open() para crear los formularios (por consiguiente al usar también sus métodos para crear los controles), éste viene con el @csrf incorporado; lo quiere decir que no es necesario llamar a la directiva para realizar este tipo de validación especial (de hecho crea el _token de forma automática).
alejandro villegas
si yo quiero consumir una api ella en laravel como manejo lo de los tokens dado que las peticiones vienen de distintos servidores
Edward Suarez
Todo va perfecto.
Jhonathan Alfonso
Vamos dandole!
Usuario anónimo
UserSuper :)
Jhonathan Alfonso
Jajaja estamos teniendo un ataque :D
Paul Cortes
Excelente el uso del CSRF
Jhonathan Alfonso
Recuerda que actualizaron los comando ahora se puede usar
@csrf
jean pierre gabriel nieto acosta
en mi formulario no da ningun error cuando no le pongo @csrf ¿por que?
Cristian Florez
{{csrf_field()}}
Jhonathan Alfonso
Hola jenapi, este comando lo actualizaron y ahora también puedes usar el @scrf, osea:
{{ csrf_field }} === @scrf {{ method= 'PUT'}} === @method('PUT')
Daniel Guzman
Jansenio Gonzales Venegas
Hola amigo como hicistes para que te genere el @csrf ??
Jansenio Gonzales Venegas
Hola amigo como hicistes para que te genere el @csrf ??
Germán QL
Y si alguien enviara una petición POST externa a nuestra dirección /expense_reports incluyendo el parámetro **_token ** De igual forma serviría ?
Jimmy Buriticá Londoño
Ten en cuenta que el token cambia cada vez que cargamos la página. En teoría no es posible que lo puedan saber.
luis alejandro castañeda varon
no por que el token cambia y es muy dificil reproducir el mismo token
Cristian Mora
Es importante generar un HELPER @csrf para evitar errores como el 419, el csrf podria ser un ataque a nuestro formulario por lo que este HELPER nos aportara un TOKEN par anuestro usuario o sesion, con el fin de enviar correctamente nuestra informacion. Podemos crear MIDDELWARE o capas intermedias para protejer aun mas nuestro sistema en el archivo de KERNEL.
Geraldo Sosa
Si usan phpstorm les aparecera Key: si usan visual studio code no aparecera esta.
Tengan cuidado de este detalle al codear
Angel Enrique Barrios
Bien
Japheth Calzada López
Buena clase, aunque es mas básico y sencillo que el anterior, para quienes apenas comienzan a usar Laravel les será mas fácil de entender
Jansenio Gonzales Venegas
Al parecer no me reconoce el @csrf lo vizualiza como texto en la pagina
Jansenio Gonzales Venegas
no me genera nigun input
Jansenio Gonzales Venegas
lo solucione !!! {{ csrf_field() }}
esto agrege entre el from y el input.. Apunten compañeros
Mi formulario para dar de alta un cliente. Incluye una pequeña ventana modal de confirmación hecha con Bootstrap:
@extends('layouts.form') @section('title', 'Nuevo Cliente') @section('table_name', 'clients') @section('form_content') <form action="/clients" method="POST"> @csrf <div class="form-group"> <label for="client_name">Razón Social</label> <input type="text" class="form-control" id="client_name" name="client_name" aria-describedby="nameHelp" placeholder="EMPRESA, S. A. DE C. V."> <small id="nameHelp" class="form-text text-muted">Ingresar en mayúsculas tal como aparece en el RFC.</small> </div> <div class="form-group"> <label for="client_nickname">Alias</label> <input type="text" class="form-control" id="client_nickname" name="client_nickname" aria-describedby="nicknameHelp" placeholder="EMPRESA"> <small id="nicknameHelp" class="form-text text-muted">El alias es empleado para vistas compactas y la generación de nombres de carpetas.</small> </div> <div class="form-group"> <label for="client_custom_location">Domicilio Fiscal</label> <input type="text" class="form-control" id="client_custom_location" name="client_custom_location" aria-describedby="locationHelp" placeholder="CALLE, No, LOCALIDAD, CIUDAD, ESTADO"> <small id="locationHelp" class="form-text text-muted">La ubicaión tal como desee que aparezca en los informes.</small> </div> <!-- Button trigger modal --> <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModalCenter"> Guardar </button> <!-- Modal --> <div class="modal fade" id="exampleModalCenter" tabindex="-1" role="dialog" aria-labelledby="exampleModalCenterTitle" aria-hidden="true"> <div class="modal-dialog modal-dialog-centered" role="document"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title" id="exampleModalCenterTitle">Advertencia</h5> <button type="button" class="close" data-dismiss="modal" aria-label="Close"> <span aria-hidden="true">×</span> </button> </div> <div class="modal-body"> ¿Esta seguro que desea guaradr los cambios? </div> <div class="modal-footer"> <button type="button" class="btn btn-secondary" data-dismiss="modal">Cancelar</button> <button type="submit" class="btn btn-primary">Guardar</button> </div> </div> </div> </div> </form> @endsection
Tengo una tabla personas y otra empleados que estan relacionadas, en un form tengo los datos de la persona y los datos del empleado para darlos de alta, lo correcto es guardar la informacion en persona y el id que me da despues de guardarlo debo de relacionarlo en el campo idpersona dentro de la tabla de empleado, como puedo hacerlo?
$report = new Persona(); $report->nombre= $request->get('nombre'); $report->estatus=1; $report->save(); $report = new Empleado(); $report->numEmpleado= $request->get('empleado'); $report->idPersona=???; $report->save();