Guías de seguridad

La base de seguridad para desarrolladores independientes y pequeños operadores: controles estándar en orden de prioridad

Lista de seguridad para desarrolladores independientes en orden de prioridad: MFA, higiene de secretos, monitoreo de CVE y copias de seguridad.

Publicado 2026-06-11 Actualizado 2026-10-05 10 min de lectura
En esta página

Para: desarrolladores independientes y pequeños operadores que no tienen claro "cuánto es el mínimo" en seguridad. Aquí no hay pasos de ataque — solo los controles básicos considerados estándar del sector, en orden de prioridad. Cada elemento enlaza a un artículo más profundo, así que puedes empezar aquí y leer solo lo que necesites.

La visión de este sitio: no 'hacerlo todo' sino 'completar en este orden'

Una persona sola o un equipo pequeño no puede hacerlo todo a la vez — que es justo por lo que el orden es lo que más importa. Si la capa superior (cuentas de administración, dominio y correo) queda tomada, todo control por debajo deja de tener sentido (el atacante lo restablece todo como si fuera tú). Avanza desde la capa más importante hacia abajo y reducirás al máximo tu probabilidad de incidente para el tiempo que tienes. Este artículo está escrito no como conocimiento exhaustivo sino como una lista para decidir rápidamente qué completar a continuación.

Nivel 0 — cuentas de administración, dominio, correo

MFA · dominio · DNS · correo · pago

Nivel 1 — secretos y código

secretos fuera de git · detección pre-commit · separación/rotación de claves

Nivel 2 — la propia app

validación de entrada · auth/sesión · TLS/encabezados · autenticación de correo

Nivel 3 — parchear, detectar, recuperar

CVE de dependencias · actualizaciones del SO · SSH/FW · registros · copias de seguridad

El orden de prioridad de este sitio. Cuanto más alta la capa, más anula su toma todos los demás controles. Avanza de arriba abajo.
minutos
hasta que se explota un secreto expuesto
vulnerabilidades conocidas
causa de la mayoría de las brechas graves
un punto
pierde las cuentas de administración o el correo y se sortean todos los demás controles
orden
lo que hace que el tiempo limitado cuente

Nivel 0: protege las cuentas de administración, el dominio y el correo (primero)

Esta es la premisa para todo lo demás. Si toman tu dominio, correo o panel de hosting, todos los demás controles quedan anulados. El atacante restablece contraseñas como si fuera tú, reescribe el DNS, entra a tu servidor. Así que esto es lo que blindas primero.

1

Pon MFA resistente al phishing

Exige MFA en tu registrador de dominios, DNS, panel de hosting, correo y pago. Fortaleza: passkeys/llaves de hardware (FIDO2) > app de autenticación (TOTP) > SMS. El SMS es vulnerable vía SIM swap — solo como último recurso.
2

Protege el correo con más rigor que nada

El restablecimiento de contraseña de casi todos los servicios llega al correo. Si toman el correo, pueden tomar tus otras cuentas una tras otra. Solo el correo ya merece una llave de hardware.
3

Guarda los códigos de recuperación y respaldo con seguridad

Mantén los códigos de recuperación del MFA en un gestor de contraseñas o en un lugar físicamente seguro. Piérdelos y te bloqueas a ti mismo.
4

Separa cuentas para reducir puntos únicos de fallo

Evita contraseñas reutilizadas en cuentas críticas; haz cada una única con un gestor de contraseñas para que una brecha no se extienda a otros servicios.

Nivel 1: no filtres secretos ni código

El incidente fundacional de este sitio, y muchos en el mundo real, vienen de un hueco aquí: secretos como archivos .env y claves de API colándose en el código o en un repositorio público.

1

Mantén los secretos fuera del código y de la documentación

Separa claves de API, contraseñas y cadenas de conexión en .env y exclúyelas de git (.gitignore). No escribirlas en absoluto es el control más fuerte.
2

Detén los secretos por máquina antes del commit

Un hook pre-commit (gitleaks, etc.) bloquea automáticamente los commits que contienen secretos — la misma comprobación que ofrece la protección de push de GitHub, configurada por ti mismo (→ Git autoalojado vs GitHub).
3

Si se filtró, asume que se filtró TODO — rota todo

Ante cualquier sospecha, revoca y reemite de inmediato las claves/tokens afectados. No lo dejes en "probablemente está bien". Esto es lo que más funciona en la respuesta a incidentes reales (→ una clave filtrada y facturada por fraude).
4

Acota los tokens estrictamente y mantenlos de corta vida

No acuñes un único token todopoderoso. Usa privilegio mínimo, caducidad corta y tokens por servicio para que una fuga quede contenida.

¿Autoalojas Git? Precaución extra

Autoalojar porque te asusta el "público accidental" de GitHub no elimina el commit accidental. Sin nada del bloqueo de secretos integrado de GitHub, un hook de secretos pre-commit es obligatorio en el autoalojamiento. Ver Git autoalojado vs GitHub: cuál es más seguro.

Nivel 2: endurece la propia app

El mínimo para la aplicación web que expones. El objetivo no es detener ataques novedosos sino corregir las vulnerabilidades comunes y bien conocidas. Este sitio reformula cada uno como defensa en sus páginas de glosario.

1

Nunca confíes en la entrada (previene las vulnerabilidades comunes)

Detén la inyección SQL, el XSS, el SSRF y el path traversal impulsados por la entrada del usuario con escape, parametrización y listas de permitidos.
2

Acierta con auth, sesión y acceso

Defiende contra el CSRF, aplica comprobaciones de acceso contra el IDOR (ver datos ajenos), y fija controles de marco contra el clickjacking.
3

Haz que TLS y los encabezados de seguridad cuenten

Exige HTTPS, fija HSTS, CSP y compañía. Califica tu propio sitio con la comprobación de encabezados de seguridad (construye la CSP con el constructor de CSP).
4

Previene la suplantación de correo

Si envías correo desde tu propio dominio, configura SPF/DKIM/DMARC. Encuentra huecos con el comprobador de autenticación de correo.

Nivel 3: parchear, detectar, recuperar

La base para "mantener el daño pequeño y recuperar rápido incluso tras una brecha". El monitoreo de dependencias como osv-scanner vive aquí.

1

Monitorea por máquina los CVE de dependencias de forma continua

Los CVE publicados y descuidados son la principal causa de incidentes. Ejecuta osv-scanner o pnpm audit en CI/cron (→ no quedarse atrás con los CVE).
2

Actualiza automáticamente el SO y el servidor

Automatiza las actualizaciones de seguridad del SO (unattended-upgrades, etc.). No descuides tampoco los parches de tu servidor Git y middleware.
3

Endurece SSH y el cortafuegos

Solo claves SSH (autenticación por contraseña desactivada, sin login directo de root), cortafuegos con solo los puertos que necesitas, fail2ban para frenar la fuerza bruta.
4

Usa el privilegio mínimo para limitar hasta dónde se extiende una brecha

Ejecuta los servicios sin root, nunca expongas la BD/servicios internos, una clave SSH distinta por servidor — para que una brecha no se encadene.
5

Copias de seguridad 3-2-1 + una restauración probada

Tres copias, dos medios, una externa. Cifradas. Y no solo "está funcionando" — prueba de verdad una restauración una vez.
6

Conserva registros para poder notar anomalías

Retén registros de acceso, autenticación y errores para que las señales raras sean visibles. Cuanto más tarde detectes, más amplio el daño.

Por dónde empezar

"Todo, ya mismo" no es realista. Compara el orden que la gente tiende a tomar con el que recomienda este sitio.

El orden que la gente tiende a tomar (ineficiente)

  • empezar con trabajo llamativo de vulnerabilidades de aplicación
  • dejar el MFA en "luego" indefinidamente
  • tener copias de seguridad pero nunca haber probado una restauración
  • los secretos están en .env pero no hay hook de detección

El orden que recomienda este sitio

  • Nivel 0: asegura primero con MFA las cuentas de administración, el correo y el dominio
  • Nivel 1: detén estructuralmente las fugas de secretos (detección pre-commit + política de rotar todo)
  • Nivel 2: corrige las vulnerabilidades comunes de la app
  • Nivel 3: llega a "recuperable" con monitoreo de dependencias, actualizaciones y copias con restauración probada

Este sitio también se defiende en este orden

Este sitio aplica esta misma base a sí mismo: la app y la base de datos en contenedores separados, la base de datos solo en una red interna (limitando el alcance del impacto en la capa de contenedor/red) / una clave distinta por servidor / secretos nunca en git ni en documentación / monitoreo de CVE de dependencias antes de cada despliegue y a diario / copias de seguridad externas a un servidor aparte / solicitudes externas a través de un límite de seguridad. Un sitio que enseña seguridad no puede dejar vulnerabilidades en su propia configuración, así que ejecutamos este orden de prioridad sobre nosotros mismos primero. Nuestro incidente fundacional, también, no vino de un ataque novedoso sino de que faltaba un único control básico. Por eso seguimos diciéndolo: lo básico antes del trabajo llamativo.

Sigue leyendo

FAQ

Q¿Cuál es el primer control de seguridad que debería configurar un desarrollador independiente?
A

Proteger las cuentas cuya toma anula todo lo demás: pon MFA resistente al phishing (passkeys/llaves de hardware) en tu registrador de dominios, DNS, panel de hosting, correo y cuentas de pago. Si los toman, todos los demás controles quedan anulados — así que van primero.

Q¿Son todos los controles de la base igual de importantes?
A

No. Hay un orden claro. Este sitio recomienda completarla así: 1) cuentas de administración, dominio y correo, 2) secretos y código, 3) la propia app, 4) parchear/detectar/recuperar. Con recursos finitos, de arriba abajo reduce más los incidentes.

Q¿Cuenta el monitoreo de CVE de dependencias como base?
A

Sí. Verificar de forma continua y por máquina las dependencias en busca de vulnerabilidades conocidas con osv-scanner o pnpm audit es ya un estándar del sector. La mayoría de las brechas graves vienen de vulnerabilidades conocidas (CVE) descuidadas, no de ataques novedosos.