Seguridad - ciscojuan/tourisplan GitHub Wiki
Seguridad en el Proyecto
Next.js es un framework de React que destaca por su enfoque en la renderización del lado del servidor (SSR), la generación estática (SSG) y su capacidad para construir aplicaciones web altamente optimizadas.
Este proyecto esta desarrolado puramente con Next.js que nos ofrece la caracteristica de estar casi en su totalidad bajo Server Side Rendering. Esto quiere decir que si deshabilitamos javaScript del navegador, podremos segir navegando por nuestra aplicación sin inconvenientes. Esto se logra a traves de la consola de desarolladores.
Al recargar notamos que los módulos de usuario (login, register, mis reservas) el de planes turisticos (ver detalle) funcionan sin inconvenientes. La única caracteristica que no va a servir será la paginacion que hace uso de del hook use state que como todos los hook, son propios de los componente del lado del cliente.
A continuacion se mensiona herramientas que se utilizaron en el proyecto para aplicar seguridad en el mismo:
1. Amazon Q Review
Esta herramienta permite escanear todo el codigo del proyecto en busca de vulnerabilidades o malas practicas de programacion, señalando justamente el archivo y script dónde halló la vulnerabilidad, ademas del tipo de vulnerabilidad dado por la CWE (Common Weakeness Enumeration) de MITRE y sugiere posibles remediaciones en el codigo para mitigarla.
2. Dependabot Alerts
Herramienta SAST de GitHub que permite escanear el codigo en busca vulnerabilidades en librerias o dependecias. Al igual que la anterior, sugiere actualizar a la version no mas reciente, sino una dónde sea estable y sin vulnerabilidades.
3. GitHub Code Security
Herramienta SAST de Github, buscar vulnerabilidades, malas practicas de programacion en el codigo. Muestra el archivo y script especifico dónde escontro la vulnerabilidad y usando GitHub Copilot, sugiere una remediacion par mitigar la debilidad.
4. Github Scan Secrets
Otra herramienta de GitHub que escanea dentro del proyecto todos los archivos en busca de variables de entorno o secretos propio de la aplicacion. Lanza alertas cuándo detecta informacion critica en algun archivo y muestra en cual fue.
5. Snyk
Herramienta SAST para encontrar vulnerabilidades en el proyecto. clasifica las vulnerabilidades encontradas en una escala de baka criticidad a alta criticidad. da un puntaje respecto ala rubrica de CWE de MITRE.
6. Pipelines CI/CD
Como buena practica y asegurar la calidad del codigo, se establecion dos workflows para garatizar la Integracion y Despliegue continuo. Dichos workflows se pueden escontar en la el menu superior, prestaña de Actions:
1. CI (Integración Continua): Este archivo configura el pipeline de integración continua que se ejecuta automáticamente cuando:
- Se hace push a la rama main o ramas feature/*
- Se crea un pull request hacia main o develop
Tiene 3 jobs principales:
- lint: Ejecuta el linter para verificar la calidad del código
- build: Compila el proyecto para asegurar que no hay errores de construcción
- type-check: Verifica los tipos de TypeScript
2. sast-snyk (Análisis de Seguridad): Este archivo configura el análisis de seguridad estático (SAST) usando Snyk. Se puede ejecutar manualmente y:
- Verifica vulnerabilidades en el código y dependencias
- Solo ejecuta análisis de alta severidad (--severity-threshold=high)
- Genera un reporte HTML con los resultados
Requiere un token de Snyk (SNYK_TOKEN)
Genera y guarda un reporte HTML accesible después de la ejecución