Audité mis proyectos personales en busca de seguridad — esto es lo que encontré

Hace poco audité todos mis proyectos personales. Revisé mis backends de FastAPI, bots de Telegram y aplicaciones web. Pensaba que era cuidadoso.

Me equivoqué.

Encontré errores reales que de hecho envié a producción. No son problemas teóricos. Son errores que cometí mientras intentaba avanzar rápido.

Estos son los principales problemas que encontré y cómo solucionarlos:

  1. Autenticación condicional Escribí código que solo verificaba las API keys si existía un secreto. Si olvidaba configurar el secreto en mi entorno, la verificación se omitía por completo. Esto dejaba mi API abierta para todo el mundo.
  1. Filtración de claves en el historial de Git Encontré claves de API antiguas en mi historial de Git. Más tarde las había movido a archivos .env, pero Git conserva cada versión antigua de tu código para siempre.
  1. Endpoints de depuración residuales Dejé endpoints en producción que mostraban mi configuración de base de datos y los ajustes del sistema. Son útiles durante el desarrollo, pero peligrosos en un entorno real.
  1. Mensajes de error detallados Estaba devolviendo errores de sistema sin procesar al usuario. Estos errores revelan tus rutas de archivos, tipos de base de datos y versiones de librerías. Un atacante puede usar estos datos para atacar tu sistema.
  1. XSS mediante innerHTML Usé innerHTML para renderizar datos de usuario en mi frontend. Esto permite que los atacantes inyecten scripts en tu sitio.
  1. Falta de Rate Limiting Tenía endpoints que llamaban a modelos de IA costosos sin límites. Un solo usuario podría generar una factura enorme en cuestión de minutos.
  1. Configuración de CORS permisiva Usé allow_origins=["*"] en mi middleware. Esto permite que cualquier sitio web realice peticiones a tu API.
  1. Fuga de archivos Escribí código que creaba archivos temporales pero no lograba eliminarlos si el proceso fallaba. Estos archivos permanecen en tu servidor para siempre.

Los problemas de seguridad rara vez son intencionales. Son el resultado de decir "arreglaré esto más tarde". El "más tarde" nunca llega.

Integra la seguridad en tu flujo de trabajo desde el primer día. Revisa tu código antes de hacer un commit y antes de desplegar.

Fuente: https://dev.to/justjinoit/i-audited-my-own-side-projects-for-security-issues-heres-what-i-found-1ahb