Skip to main content

5 consejos para proteger PHP Laravel

Escrito por
Headshot of DeveloperSteve Coochin

DeveloperSteve Coochin

feature laravel tips

21 de abril de 2022

0 minutos de lectura

Laravel, centrado en los desarrolladores, suele describirse como «el framework PHP para artesanos de la web». Es uno de los frameworks más utilizados del ecosistema PHP, con una comunidad extensa y una gran variedad de subproyectos dedicados al desarrollo de aplicaciones de todo tipo.

Desde el lanzamiento de la versión 1.0 en 2011, Laravel impulsa los sitios web de empresas globales como 9GAG, BBC y Pfizer. El proyecto principal ha crecido mucho a lo largo de los años y se divide en varios componentes, que se utilizan ampliamente tanto en sitios web como en plataformas:

  • Laravel/core: es el principal punto de encuentro de gran parte de la comunidad y el punto de partida recomendado para quienes quieren comenzar a usar Laravel. Este proyecto incluye todo lo que necesitas para poner en marcha un sitio web rápidamente, con tutoriales y documentación fáciles de seguir. PHP Composer registra un promedio móvil de más de 16000 instalaciones en 24 horas de Laravel/core.

  • Laravel/framework: proporciona la funcionalidad principal de Laravel como framework, que muchos otros proyectos usan como dependencia. Desde que se publicó en el catálogo de PHP Composer en 2013, se ha instalado más de 183 millones de veces y registra un promedio de más de 86000 instalaciones diarias. Más de un millón de plataformas y productos de código abierto lo usan como dependencia.

  • Laravel Sails: se basa en una CLI ligera diseñada específicamente para funcionar con el entorno de desarrollo Dockerizado predeterminado de Laravel. Sails permite crear aplicaciones con Laravel mediante un enfoque basado en contenedores que ofrece rapidez y escalabilidad.

Cómo empezar a usar PHP Laravel

Poner Laravel en marcha es rápido y sencillo, sobre todo si usas PHP Composer, el administrador de paquetes de PHP. Para iniciar un proyecto nuevo, solo tienes que ejecutar composer create-project Laravel/Laravel example-app en la línea de comandos. Luego, puedes usar el servidor integrado en Laravel: cambia al directorio recién creado con cd example-app y ejecuta php artisan serve. Esto inicia un servidor local que, de forma predeterminada, se ejecuta en 127.0.0.1:8000.

Página de inicio oscura de Laravel que muestra el logotipo de Laravel y enlaces a Documentation, Laracasts, Laravel News y Vibrant Ecosystem.

Una de las cosas que más me gustan de Laravel es lo bien pensado que está su enfoque centrado en los desarrolladores: incluye herramientas que estos usan con frecuencia. Laravel puede crear automáticamente un repositorio de git desde la línea de comandos con la --git flag; incluso puedes especificar una rama con la opción --branch="main".

5 formas de proteger Laravel

Veamos algunas formas de proteger tus instalaciones de Laravel y ayudar a mantener seguros a los usuarios.

1. Configuración del framework

Configurar correctamente el entorno desde el inicio para las distintas etapas del desarrollo de una aplicación es fundamental en cualquier proyecto. Con Laravel, puedes definir las configuraciones de desarrollo y producción mediante el archivo .env. Este archivo nunca debe ser accesible públicamente, ya que contiene información de configuración de la aplicación.

En producción, asegúrate de desactivar el modo de depuración. Para hacerlo, configura APP_DEBUG como false. Aunque el modo de depuración resulta útil durante el desarrollo, desactivarlo en producción evita que el público pueda acceder a errores, rutas o información crítica del sistema.

También es importante comprobar que se haya generado una clave de aplicación para tu instalación de Laravel. Se utiliza para el cifrado simétrico de cookies, URL de sesión firmadas y tokens para restablecer contraseñas. Para configurarla, usa key:generate, normalmente mediante los comandos de artisan (o php artisan key:generate, según la configuración de Laravel).

2. Prevención de la inyección SQL

Una de las mayores ventajas de Laravel es que su framework principal usa el ORM Eloquent. Este utiliza enlaces PDO para proteger contra la inyección SQL al interactuar con la base de datos conectada.

Un ORM es un software que facilita la gestión de registros de bases de datos al representar los datos como objetos. Funciona como una capa de abstracción sobre el motor de base de datos que almacena los datos de una aplicación.

Como capa adicional sobre Eloquent, especialmente al trabajar con datos ingresados por los usuarios, PHP puede ofrecer más opciones de sanitización. Nunca está de más sanitizar los datos (salvo que afecte la carga de las páginas y el rendimiento). Encontrarás más información en nuestra publicación sobre las 5 mejores formas de prevenir la inyección SQL con PHP.

3. Cookies y administración de sesiones

Proteger las sesiones y cookies de los usuarios es una excelente forma de mantener sus datos lo más seguros posible. Al gestionar estos elementos en Laravel, hay algunos aspectos que debes tener en cuenta.

Activa HttpOnly para la sesión de Laravel de tu aplicación; puedes hacerlo en el archivo config/session.php. Así agregarás una capa de seguridad y evitarás que JavaScript pueda acceder a las cookies de sesión. Establece un tiempo de inactividad de sesión breve para que la sesión del usuario se cierre automáticamente cuando no haya actividad.

La configuración del dominio de las cookies también se encuentra en el archivo config.session.php. Debe configurarse como Null, a menos que uses subdominios. Al configurar el atributo del dominio de las cookies, se aplica same origin, de modo que solo el dominio base puede establecerlas. También es recomendable configurar el atributo SameSite de las cookies como lax o strict para restringirlas al mismo sitio o al mismo dominio.

La opción de configuración más importante del archivo config/session.php es HTTPS only. Al activarla, te proteges contra los ataques de intermediario (MITM) y garantizas que solo se permitan URL seguras HTTPS.

4. Gestiona las cargas de archivos de forma segura

Valida siempre el tipo de archivo con MimeTypes:

$request->validate([
    'photo' => 'file|size:100|mimes:jpg,bmp,png'
]);

Además:

  • No confíes en las rutas o los nombres de archivo que ingresen los usuarios. Usa siempre cadenas hash o nombres generados por el sistema.

  • Evita XML y archivos ZIP siempre que sea posible, o gestiónalos de forma segura.

  • Usa basename() para eliminar recorridos de directorios no deseados.

5. Usa herramientas SAST y SCA

Estas herramientas ayudan a proteger al máximo tu código y el uso de paquetes de código abierto al analizar el código y los manifiestos de paquetes. Más importante aún, permiten configurar análisis continuos para recibir alertas si se detecta una vulnerabilidad en una versión de un paquete.

Lee nuestra guía para combinar SAST y SCA y mejorar la cobertura de seguridad de tu proyecto.

Análisis de composición de software (SCA)

Las herramientas SCA, como Snyk Open Source, son muy útiles si usas software de administración de paquetes de código abierto, como PHP Composer. Una herramienta SCA puede analizar el manifiesto de Composer para detectar posibles vulnerabilidades conocidas en versiones específicas de paquetes de código abierto.

La base de datos de vulnerabilidades de Snyk muestra una inyección de comandos crítica que afecta a las versiones de Laravel/framework anteriores a la 5.8.17.
Snyk Open Source prioriza las vulnerabilidades para que puedas llegar más rápido a los problemas críticos.

Ten en cuenta que una buena herramienta SCA analiza de forma continua tus proyectos, bibliotecas de código abierto y dependencias para detectar vulnerabilidades. Cada año vemos que aumentan las rutas vulnerables que surgen en distintos ecosistemas. Detectarlas a tiempo puede alertarte sobre amenazas recién identificadas, como la reciente vulnerabilidad de PHP dompdf.

Pruebas de seguridad de aplicaciones estáticas (SAST)

Las herramientas SAST, como Snyk Code, pueden ayudar a detectar posibles vulnerabilidades en el código. Así puedes investigar las secciones de código identificadas.

El análisis de Snyk Code para PHP es especialmente útil porque no solo resalta las áreas de riesgo, sino que también te ayuda a rastrear funciones, objetos y frameworks para investigar más a fondo.

Vista de flujo de datos de Snyk Code que destaca el uso inseguro de hash MD5 en el código Filesystem.php de Laravel.
La vista de flujo de datos de Snyk Code destaca las áreas potencialmente inseguras de tu código.

Con ejemplos reales de la vulnerabilidad en cuestión, Snyk Code también ofrece posibles pasos para corregirla.

Vista de análisis de correcciones de Snyk Code para CWE-916, que muestra detalles de una vulnerabilidad de hash de contraseñas, recomendaciones de prevención y ejemplos de correcciones en PHP.
La vista de análisis Fix de Snyk Code proporciona detalles sobre las vulnerabilidades y sugiere pasos para corregirlas.

Analiza tus proyectos de Laravel más rápido de lo que puedes decir «PHP artisan»

Analizar tus proyectos de Laravel con Snyk es rápido y sencillo. Para empezar, crea una cuenta gratuita de Snyk e inicia sesión en la plataforma que prefieras. Después de crear tu cuenta, tienes varias formas de empezar a analizar proyectos.

Conecta tu repositorio

Esta es, por mucho, mi forma favorita (y la más sencilla) de recibir alertas continuas sobre nuevas vulnerabilidades. En el panel de Snyk, haz clic en Add Project, en la esquina superior derecha, y selecciona el repositorio que quieras. Si no aparece en el menú rápido, haz clic en Other y selecciona la plataforma que quieras en la página de integraciones.

Página de integraciones de Snyk que muestra integraciones de control de versiones con GitHub, GitHub Enterprise, GitLab, Bitbucket y Azure Repos

Después de seguir los pasos para conectar tu cuenta, ya puedes conectar el repositorio de tu proyecto desde la página de configuración. Marca la casilla correspondiente al tipo de repositorio y haz clic en Add selected repository.

Pantalla de selección de repositorios de GitHub en Snyk, con la búsqueda “laravel” y el repositorio laravel seleccionado para realizar pruebas.

Instala Snyk CLI

Snyk CLI ofrece varias formas de integrar herramientas SCA y SAST directamente en la línea de comandos con solo ejecutar unas líneas de código. Puedes hacerlo mediante npm o Yarn, ejecutables independientes o instalaciones específicas para cada sistema operativo.

Después de instalar Snyk CLI, verifica la instalación con snyk –version para asegurarte de que todo funcione correctamente. Luego, conecta Snyk CLI con tu cuenta de Snyk ejecutando snyk auth en la línea de comandos. Se debería abrir la página de autenticación en el navegador predeterminado.

Página de autenticación de Snyk CLI con el encabezado “Authenticate for CLI” y el botón Authenticate

Haz clic en Authenticate y ya podrás analizar un proyecto con mi comando favorito de CLI: snyk test.

Salida de terminal que muestra una prueba de Snyk en una aplicación de ejemplo de Laravel, sin rutas vulnerables y con detalles del paquete npm.

Integraciones para IDE

También puedes integrar estas herramientas de análisis en tu IDE para realizar comprobaciones y análisis en tiempo real mientras desarrollas una aplicación. Por ejemplo, la integración de Snyk para VSCode analiza paquetes y dependencias en tiempo real. Descubre cómo empezar y cómo funciona en tiempo real la integración para Visual Studio Code.

Recuerda contribuir a los proyectos de código abierto

Recuerda contribuir a los proyectos de código abierto siempre que puedas, especialmente si los usas con frecuencia. La comunidad de Laravel ha crecido considerablemente con el aumento de la funcionalidad y la adopción, lo que ha ayudado a convertir el proyecto en lo que es hoy.

Empieza con los desafíos de Capture the Flag

Aprende a resolver desafíos de captura la bandera con nuestro taller virtual introductorio a pedido.

Leer más

blog feature snyk container custom base recommendations
Blog

Presentamos Evo Agentic AppSec: seguridad al ritmo del desarrollo con IA

El desarrollo impulsado por IA supera el ritmo de los flujos de trabajo de seguridad tradicionales. Agentic AppSec de Snyk usa agentes de seguridad para encontrar, corregir y verificar vulnerabilidades de forma continua, mientras las personas definen el estándar.

blog feature ai violet
Blog

VulnBump: ¿Pueden los agentes de IA corregir dependencias vulnerables sin romper la compilación?

VulnBump prueba agentes de IA en 307 actualizaciones reales de dependencias. Una corrección cuenta solo si elimina la vulnerabilidad y mantiene en verde la compilación y las pruebas.

Blog

Los modelos de frontera encontraron las vulnerabilidades. Solo el atacante encontró las cadenas.

El análisis estático encontró las fallas, pero solo las pruebas de ataque en vivo demostraron cómo podían encadenarse para provocar brechas. Una comparación de Evo COS, Claude Security y Claude Code Security.