lo practico Laravel seguridad lista de verificación
Por Andrea Pollastri · Última actualización: · lectura gratuita, sin muro de pago
La mayoría de las aplicaciones Laravel no son pirateadas por días cero inteligentes. Son pirateados por archivos .env expuestos, modo de depuración activado, PHP sin parches y SSH débil. Esta lista de verificación cubre primero el trabajo aburrido y de alto impacto (servidor, aplicación, dependencias, secretos y respuesta) con una forma de automatizar cada paso.
¿Qué es lo que realmente hace que se pirateen Laravel aplicaciones?
Clasificados por la frecuencia con la que aparecen en incidentes reales, no por lo interesantes que son:
- Salida de depuración expuesta.
APP_DEBUG=trueen el entorno de fugas de producción variables, credenciales de bases de datos y rutas de archivos a cualquiera que provoque un error. - Legible
.envo.git/. Raíces de documentos mal configuradas que servir archivos de puntos, entregar su APP_KEY y sus credenciales. - PHP, marco o paquetes sin parches con CVE conocidos.
- SSH débil: autenticación de contraseña, inicio de sesión de root habilitado, sin protección de fuerza bruta.
- Cargas de archivos inseguras que permiten contenido ejecutable en rutas web.
- Inyección en las trampillas de evacuación: SQL sin formato sin enlaces, sin escape
{!! !!}Salida de cuchilla. - Paneles de administración sin MFA y sin limitación de tarifa.
Lo aburrido vence a lo inteligente: si cierras estas siete puertas, estarás por delante de la gran mayoría de la producción PHP implementaciones.
Lista de verificación de protección del servidor
- SSH: solo claves, sin root.Deshabilite la autenticación de contraseña y el inicio de sesión de root; usar un usuario administrador dedicado. Agregue Fail2ban para prohibir fallas repetidas. (Un fresco Cipi la instalación aplica exactamente esto de forma predeterminada: inicio de sesión raíz deshabilitado, acceso de administrador solo con clave, Fail2ban y UFW habilitados).
- Denegación predeterminada del firewall. Sólo deben responder 22, 80 y 443. Bases de datos y Valkey/Redis
escuchar en localhost - verificar con
ss -tlnp. - TLS por todos lados, forzado. Certificados Let's Encrypt gratuitos, HTTP redirigidos a HTTPS
(
cipi ssl installentoncescipi ssl force), HSTS habilitado. - Parche según un cronograma, no según la memoria. Actualizaciones de seguridad desatendidas para el sistema operativo; un
mecanismo deliberado para PHP (Cipi ejecuta una verificación semanal del parche de seguridad PHP -
cipi php upgrade). - Reducir las huellas dactilares:
expose_php = Off,server_tokens off. - Aislar aplicaciones entre sí. Los usuarios del sistema por aplicación y los grupos de PHP-FPM limitan la explosión Radio cuando una aplicación se ve comprometida: Cipi proporciona este aislamiento por aplicación automáticamente.
- Retire las sobras: Archivos phpinfo, Administrador, subdominios obsoletos que apuntan a los antiguos cajas.
Lista de verificación de endurecimiento de aplicaciones
APP_ENV=production,APP_DEBUG=false— no negociable.- Fuerza HTTPS en el nivel de la aplicación también (proxies confiables + esquema forzado), por lo que las URL firmadas y se comportan las cookies.
- Valide todo con Solicitudes de formulario; Nunca confíes en las entradas del cliente, incluidos los encabezados. y nombres de archivos.
- Guardias de asignación masiva: explícito
$fillableen cada modelo. - Autorizar con políticas en cada ruta que toque los datos de otra persona; agregar
Route::can()/ middleware, not ad-hoc ifs. - Límite de tarifa inicio de sesión, registro, restablecimiento de contraseña y API públicas con Laravel Limitador de velocidad.
- Indicadores de sesión y cookies:
secure,http_only,same_siteconfigurado enconfig/session.php. - Permanezca dentro de las ataduras de Eloquent. Si debes usar
whereRaw, pasar enlaces - nunca interpolar entradas en cadenas SQL. - Escapar por defecto. tratar
{!! !!}como un olor a código que requiere justificación y sanitización. - Cargas de archivos: validar el tipo y tamaño MIME, almacenar fuera
public/con nombres aleatorios, servir a través de URL firmadas o un controlador. - Encabezados de seguridad: Opciones de marco X, opciones de tipo de contenido X, política de referencia y un CSP apropiado para su interfaz.
Dependencias y cadena de suministro
Su aplicación es principalmente código de otras personas, así que trate la higiene de dependencias como un control de seguridad de primera clase:
- Confirmar archivos de bloqueo (
composer.lock,package-lock.json) entonces La producción ejecuta exactamente lo que usted probó. - correr
composer auditen CI en cada solicitud de extracción: la compilación falla cuando una dependencia tiene un aviso conocido. (Conectar esto a una tubería lleva cinco minutos; consulte nuestro CI/CD guía.) - Automatizar las relaciones públicas de actualización con Renovate o Dependabot; pequeños aumentos semanales superan trimestralmente megaactualizaciones.
- Busque configuraciones erróneas específicas de Laravel. Punto de control es un open-source Laravel escáner de seguridad que puede agregar a su cadena de herramientas para detectar errores a nivel de marco antes de que ocurran barco.
- Escanee también desde el exterior. una plataforma como hackly se ejecuta recurrentemente escaneos de vulnerabilidades en su superficie pública: la vista del atacante de su pila, según un cronograma.
Secretos y protección de datos
.envnunca ingresa a Git. Distribuya secretos a través de sus herramientas de implementación, no el repositorio.- Usuarios de bases de datos con privilegios mínimos: un usuario por aplicación, no
GRANT ALLen*.*. (Cipi crea una base de datos dedicada y un usuario por aplicación). - Cifre la configuración de la infraestructura en reposo. Cipi almacena la configuración de su servidor y aplicación cifrado con AES-256 en su VPS: los metadatos de la infraestructura nunca salen de la máquina.
- Alcance API tokens (Habilidades de Sanctum) y rotar las credenciales cuando las personas se van.
- Anonimice los datos de producción antes de compartirlos. Nunca entregue los volcados de producción a la puesta en escena o desarrolladores externos sin procesar; el Cipi Agente El paquete Laravel incluye un anonimizador de base de datos para exactamente este flujo de trabajo.
- Copias de seguridad cifradas y externas — y pruebe la ruta de restauración (consulte la guía de implementación para la copia de seguridad configuración).
Detección, seguimiento y respuesta
- Centralizar las excepciones. Un pico en 500 suele ser el primer signo de sondeo. Boogle te da un self-hosted rastreador de excepciones, por lo que las cargas útiles de error (que a menudo contienen datos de usuario) permanecen en su infraestructura.
- Comprobaciones de estado + alertas de tiempo de actividad. Cipi 5 controles de estado de la aplicación de barcos; emparejarlos con un Monitor externo de tiempo de actividad para la vista exterior.
- Mire los registros de autenticación. Informes Fail2ban y
lastbdecirte quién llama. - Tenga un plan de respuesta antes de que lo necesite: aislar la caja, rotar cada secreto
(incluidas las implicaciones de APP_KEY para datos cifrados), restaurar desde una instantánea en buen estado
(
cipi backup runcubre instantáneas programadas; Cipi 5 agrega instantáneas de la base de datos previas a la implementación), Identifique el punto de entrada y luego escriba la autopsia. Nunca parches y ores en una persona comprometida anfitrión.
Pon esto en práctica con Cipi
Cipi es la open-source implementación gratuita CLI a la que se hace referencia en esta guía: un comando se convierte en un nuevo Ubuntu VPS en un servidor de producción reforzado para Laravel — Nginx, PHP-FPM o Octane, MariaDB o PostgreSQL, colas, programador, SSL e implementaciones de Git sin tiempo de inactividad incluidas.
Preguntas frecuentes
¿Laravel es seguro de forma predeterminada?
El marco incluye valores predeterminados sólidos: protección CSRF, contraseñas hash, protección de inyección SQL a través del generador de consultas y salida Blade de escape. La mayoría de los incidentes del mundo real provienen de errores de implementación (modo de depuración activado, archivos .env expuestos, PHP sin parches, SSH débil), razón por la cual el fortalecimiento del servidor es tan importante como el código de la aplicación.
¿Cuál es la configuración de seguridad Laravel más importante?
APP_DEBUG=false en producción. Una página de depuración expuesta filtra variables de entorno, credenciales y rutas, y sigue siendo la infracción Laravel autoinfligida más común. Verifíquelo ahora y luego automatice la verificación en su proceso de implementación.
¿Con qué frecuencia debo actualizar PHP y mis dependencias?
Aplique parches de seguridad tan pronto como sea posible: automatice la detección con la auditoría composer en CI y Renovate o Dependabot para actualizar las relaciones públicas. Para el propio PHP, utilice un mecanismo administrado en lugar de memoria: Cipi, por ejemplo, realiza comprobaciones semanales y aplica PHP parches de seguridad mediante la actualización cipi php.
¿Necesito un WAF para una aplicación Laravel?
Un WAF es una capa adicional útil, no un sustituto de lo básico. Primero cierre los fundamentos: TLS, software parcheado, SSH reforzado, entrada validada, limitación de velocidad. Después de eso, un WAF a nivel de CDN agrega una defensa en profundidad contra ataques automatizados.
¿Qué debo hacer primero si sospecho que hay un servidor comprometido?
Aislar la máquina del tráfico, rotar todos los secretos que contiene (contraseñas de bases de datos, tokens API, APP_KEY), restaurar la aplicación en un servidor limpio a partir de una copia de seguridad en buen estado y solo entonces investigar el punto de entrada. Parchar el host comprometido en vivo y esperar es la forma en que los atacantes mantienen su posición.