5 consejos para proteger PHP Laravel
DeveloperSteve Coochin
21 de abril de 2022
0 minutos de lecturaLaravel, 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.

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:
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.

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.

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

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.

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.

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.

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

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.



