Hilo transversal — Seguridad
La seguridad no es “la materia M18”. Es un hábito en todo el plan. Labs ofensivos: solo tus sistemas.
Por etapa
Básica
| Materia |
Práctica mínima de seguridad |
| M01 |
No subir secretos; .gitignore de .env |
| M02 |
Validar inputs; no loguear contraseñas |
| M03–M05 |
— (fundamento; conciencia de límites/representación) |
| M06 |
Errores sin filtrar stack traces sensibles al usuario |
Disciplinaria
| Materia |
Práctica mínima |
| M07–M08 |
No “optimizar” validaciones fuera |
| M09 |
Least privilege DB; queries parametrizadas desde el día 1 |
| M10 |
TLS (seguridad de la capa de transporte), superficie de ataque, cookies seguras (concepto) |
| M11 |
Permisos Linux, secretos en env, no root innecesario |
| M12 |
Requisitos no funcionales de seguridad en el SRS (especificación de requisitos de software) |
| M13–M14 |
Trust boundaries en el diseño |
| M15 |
Tests de regresión de auth/autorización |
| M16 |
No filtrar datos ajenos en UI (interfaz de usuario) “por error de UX (experiencia de usuario)” |
| M17 |
Auth real desde MVP (producto mínimo viable); roles; HTTPS (HTTP sobre TLS); preparar tenant_id (SaaS) |
| M18 |
AppSec (seguridad de aplicaciones) profundo (threat model + OWASP (proyecto abierto de seguridad en aplicaciones web) + CI (integración continua)) |
| M19 |
Secrets en hosting, backups, staging/prod SaaS (software como servicio) |
| M20 |
Storage seguro de tokens; certificate pinning intro (opcional) |
Terminal
| Materia |
Práctica mínima |
| M21 |
Riesgos de seguridad en el backlog |
| M22 |
No prometer “banco-grade” sin evidencia; vender suscripción con honestidad |
| M23 |
IA por tenant; no mezclar corpus/PII (información de identificación personal) entre negocios |
| M24 |
Evaluar riesgo de deps/experimentos |
| M25 |
Security review + IDOR (referencia directa insegura a un objeto) cross-tenant + tabletop + hardening |
| M26 |
Egreso SaaS con evidencia de aislamiento vigente |
Reglas de oro
- Parametriza consultas. Nunca concatenes SQL (lenguaje de consulta estructurado) con input de usuario.
- Autoriza en servidor (anti-IDOR) — en SaaS: siempre filtra por
tenant_id.
- Hashea contraseñas con libs maduras.
- Secrets fuera del repo (incl. Stripe).
- Si no puedes atacar tu app de forma ética controlada, aún no la entiendes.
- Aislamiento multi-tenant (varios clientes en un solo sistema) es requisito de egreso, no un “nice to have”.
Siguiente lectura