14 marzo, 2021

Forzar https en Laravel usando un Middleware

Aprende a implementar un middleware en Laravel para redirigir automáticamente el tráfico HTTP a HTTPS y mejorar la seguridad de tu aplicación web.

Suscríbete a nuestro canal en Youtube

Suscríbirse

En esta lección aprenderás cómo forzar el uso de SSL (HTTPS) en tu proyecto Laravel. Usar HTTPS es esencial para proteger la comunicación entre tu servidor y los usuarios, ya que cifra la información sensible y mejora la seguridad general de la aplicación.

¿Por qué es importante usar HTTPS?

El protocolo HTTPS asegura que los datos transferidos entre el navegador y el servidor estén cifrados. Esto es crucial para proteger la información personal y las credenciales de los usuarios, además de mejorar la confianza en tu aplicación.

Pasos para forzar HTTPS en Laravel

Sigue los pasos que te explico a continuación para redirigir automáticamente todo el tráfico HTTP a HTTPS.

1. Configura tu archivo .env

Primero, necesitas asegurarte de que Laravel está configurado para operar en un entorno de producción con HTTPS. Ve a tu archivo .env y asegúrate de que la URL de tu aplicación comienza con https://:  

bash

APP_ENV=production
APP_URL=https://tusitio.com

De esta forma, Laravel sabrá que tu aplicación está en un entorno de producción y que necesita usar HTTPS.

2. Modifica el AppServiceProvider

Luego, vamos a editar el AppServiceProvider.php para que Laravel redirija todas las solicitudes a HTTPS. Dirígete al archivo app/Providers/AppServiceProvider.php y agrega lo siguiente en el método boot:  

php

use Illuminate\Support\Facades\URL;

public function boot()
{
    if (app()->environment('production')) {
        URL::forceScheme('https');
    }
}

Este fragmento de código forzará todas las rutas de tu aplicación a utilizar el esquema HTTPS siempre que estés en un entorno de producción.

3. Configura la redirección en el servidor

Para Nginx:

Si usas Nginx como servidor web, necesitarás agregar una regla de redirección a HTTPS en tu configuración de servidor. Busca o edita tu archivo de configuración de Nginx (/etc/nginx/sites-available/default, por ejemplo) y añade lo siguiente: 

nginx

server {
    listen 80;
    server_name tusitio.com www.tusitio.com;
    return 301 https://$host$request_uri;
}

Esto asegurará que todas las solicitudes HTTP se redirijan automáticamente a HTTPS.

Para Apache:

Si usas Apache, edita el archivo htaccess en la raíz de tu proyecto y agrega el siguiente código:  

apache

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{HTTPS} !=on
    RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>

Con esto, cada vez que alguien intente acceder a tu sitio mediante HTTP, será redirigido a HTTPS.

4. Verifica tu certificado SSL

Es fundamental que tu servidor tenga un certificado SSL válido. Puedes obtener uno gratuito mediante Let's Encrypt, o adquirir uno si deseas opciones avanzadas. Asegúrate de que el certificado esté correctamente instalado en tu servidor.

 

Pasos para forzar HTTPS con un middleware

Ahora te voy a enseñar cómo forzar el uso de SSL en tu proyecto Laravel usando un middleware. El uso de middleware para este propósito te da mayor control sobre qué rutas o grupos de rutas deben estar protegidos con HTTPS.

1. Crear un middleware personalizado

El primer paso es crear un middleware que fuerce la redirección a HTTPS. Ejecuta el siguiente comando para crear el middleware:

bash

php artisan make:middleware ForceHttps 

Este comando creará un nuevo archivo llamado ForceHttps.php en la carpeta app/Http/Middleware/.

2. Editar el middleware ForceHttps

Ahora edita el archivo ForceHttps.php para agregar la lógica de redirección. Dirígete a app/Http/Middleware/ForceHttps.php y edita el método handle de la siguiente manera:

php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;

class ForceHttps
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle(Request $request, Closure $next)
    {
        if (!$request->secure() && app()->environment('production')) {
            return redirect()->secure($request->getRequestUri());
        }

        return $next($request);
    }
}

Este middleware verifica si la solicitud no es segura (!$request->secure()) y si la aplicación está en un entorno de producción. Si ambas condiciones se cumplen, redirige automáticamente a la versión HTTPS de la misma URL.

3. Registrar el middleware

El siguiente paso es registrar el middleware en tu aplicación. Dirígete al archivo app/Http/Kernel.php y agrega el middleware a la sección middleware global o al grupo web. Si quieres que aplique globalmente, colócalo en el array $middleware:

php

protected $middleware = [
    // Otros middlewares...
    \App\Http\Middleware\ForceHttps::class,
];

Si prefieres aplicarlo solo a las rutas web, agrégalo en el array $middlewareGroups dentro del grupo web:

php

protected $middlewareGroups = [
    'web' => [
        // Otros middlewares...
        \App\Http\Middleware\ForceHttps::class,
    ],
];

4. Aplicar el middleware a rutas específicas (opcional)

Si solo deseas que ciertas rutas sean forzadas a usar HTTPS, puedes aplicar el middleware de manera selectiva. Ve a tu archivo de rutas web.php y utiliza el método middleware() para aplicar el middleware a rutas específicas o grupos de rutas:

php

Route::middleware(['force_https'])->group(function () {
    Route::get('/ruta-segura', [SecureController::class, 'index']);
});

Aquí, el middleware force_https se aplica únicamente a las rutas dentro del grupo.

 

 


Leido 15491 veces | 2 usuarios

Descarga del código fuente Laravel de Forzar https en Laravel usando un Middleware

5 descargas

Para descargar el código crea una cuenta

Crear cuenta

Compartir link del tutorial con tus amigos


Curso de Laravel básico

USD 17.00

Descarga del código fuente

Curso de Laravel básico
Laravel Página Web Administrable

USD 17.00

Descarga del código fuente

Laravel Página Web Administrable

Más tutoriales de Laravel

Codea Applications

México, Colombia, España, Venezuela, Argentina, Bolivia, Perú

© Copyright Codea::App Cursos de Programación Online | LATAM | 2020 - 2024