Routes

Seguridad en las rutas con Laravel

La seguridad en las rutas en muy importante hoy en día y seguir las mejores prácticas es lo ideal.

 

Los Routes en Laravel son una de las capas más importante en el Framework, es un sistema de rutas que se encargan de manejar el flujo de solicitudes y respuestas, desde y hacia el cliente (como hacia el navegador, por ejemplo). Definen la dirección URL y el método por el cual se puede ingresar a dicha ruta (GET, POST, etc.)

 

Buenos hay muchas formas de definir las rutas en Laravel exigen por default 4 carpetas que nos ayudan a tener nuestras rutas mejor ordenas, están son:

  • routes/api.php: En este archivo se definen todas las rutas de las APIs que puede llegar a tener nuestra aplicación.
  • routes/channels.php: Aquí definimos los canales transmisión de eventos. Por ejemplo, cuando realizamos notificaciones en tiempo real.
  • routes/console.php: En el archivo de rutas console.php definimos comandos de consola que pueden interactuar con el usuario u otro sistema.
  • routes/web.php: En este archivo de rutas es donde definimos todas las rutas de nuestra aplicación web que pueden ser ingresadas por la barra de direcciones del navegador.

El sistema de rutas de Laravel es muy potente pero a la vez es fácil de comprender y utilizar. El Framework nos brinda distintos tipos de routes para atender cada una de las solicitudes HTTP que recibe nuestra aplicación.

Solo basta con utilizar la clase Routes con el método que corresponda al verbo HTTP:

 

Route::get($uri, $callback);
Route::post($uri, $callback);
Route::put($uri, $callback);
Route::patch($uri, $callback);
Route::delete($uri, $callback);
Route::options($uri, $callback);

Para poder poner en marcha un ejemplo podemos ver lo siguiente:

 

Route::get('/users', 'UserController@index');

Al igual que podemos tener rutas con parametros y estas se manejan de la siguiente forma

Route::get('/users/{id}', 'UserController@show');

esto quiere deci que nuestra ruta estará apuntando a nuestro controlador UserController a la funcion show aunque en versiónes más nuevas podemos tomar la siguiente forma de manejar una ruta 

 

use App\Http\Controllers\Users;

Route::get('users', [Users::class, 'show'])->name('users');

Esta es una forma más senilla de poder definir las rutas y darles un nombre para su facil ubicación al momento de correr el listado de rutas en la terminal

GET|HEAD  users .................................................................... users › App\Http\Controller\Users

Laravel se toma la protección de nuestra aplicación muy enserio, y las rutas no son la excepción ya que, el sistema de Routing de Laravel nos brinda variadas formas de proteger nuestras rutas y dotarlas de seguridad. Esatn pueden protejerse mediante parametros por ejemplo y para esto necesitamos el metodo where() al final para decirle al sistema de rutas como debe validar cada parametro:

Route::get('user/{name}', [Users::class, 'show'])->where('name', '[A-Za-z]+');

Con expresiones regulares podemos definir el tipo de valor que contendrá la variable. En caso que la variable no cumpla con la expresión regular, el sistema de rutas responderá con Error 404.

Otra forma de darle seguridad a nuestras rutas es asignarle la cantidad de middlewares que deseemos, ya sea middleware que vienen en Laravel o los que creemos nosotros. Para esto debemos utilizar la función middleware() al final de la definición.

Route::get('user/index', [Users::class, 'show'])->middlerare(['auth', 'custom-middleware']);

A diferencia de la protección de parámetros en las rutas, los middleware nos dan la posibilidad de aplicar más lógica al sistema y no responder necesariamente con error 404.

Definir grupos de rutas es una funcionalidad muy útil que nos brinda Laravel. Además de mantener un orden, nos permite aplicar middlewares en comun, definir un namespace, subdominios y prefijos en nuestras rutas.

Route::group(['middleware' => 'auth'], function () {
    Route::get('/', [DashboardController::class,'index']);

    Route::get('user/profile', [ProfileController::class,'show']);
});

Con estos sencillos pasos podemos identificar el tipo de ruta que necesitamos y definir diferentes metodos de seguridad con ellas, ya sea que definamos rutas con prefijos, grupos, middlewares son vitales.

En otro articulo veremos un evento real y como obtener las mejores practicas para protección definicion y agrupación de las mismas, si tienes algun comentarío hazmelo saber y nos vemos hasta el proximo post

 

Para crear un comentarío debes registrarte

Login Registro

Comentarios Relacionados

No hay comentarios para el post por el momento