Skip to content
SP StackPractices
intermediate

Guía de Mejores Prácticas de Seguridad

Una guía completa de seguridad de aplicaciones: autenticación, autorización, validación de inputs, gestión de secretos y prevención de vulnerabilidades comunes.

Overview

La seguridad no es una feature que agregas después—es un fundamento que construyes en cada capa de tu aplicación. Esta guía cubre las prácticas esenciales para construir software seguro.

When to Apply

  • Construyes cualquier aplicación que maneje datos de usuarios
  • Procesas pagos o información sensible
  • Expones APIs a internet
  • Trabajas en industrias reguladas (salud, finanzas, etc.)

Authentication & Authorization

Usa Librerías de Autenticación Probadas

Nunca inventes tu propia autenticación. Usa librerías probadas en batalla:

LenguajeLibrería Recomendada
Node.jsPassport.js, Auth.js
PythonDjango Auth, Flask-Login
JavaSpring Security, OAuth2
Gocasbin, gorilla/sessions

Autenticación Multi-Factor (MFA)

Requiere MFA para:

  • Cuentas de administrador
  • Acceso a producción
  • Operaciones financieras

Patrones de Autorización

Control de Acceso Basado en Roles (RBAC)

User -> Role -> Permission -> Resource

Principio del Mínimo Privilegio

Otorga solo los permisos necesarios para cada rol. Audita permisos trimestralmente.

Validación de Inputs

Valida en el Límite

# Python con Pydantic
from pydantic import BaseModel, EmailStr, constr

class CreateUserRequest(BaseModel):
    email: EmailStr
    password: constr(min_length=12)
    role: constr(pattern=r'^(user|admin)$')

Sanitiza Output

  • Usa queries parametrizadas (nunca concatenación de strings)
  • Escapa HTML antes de renderizar en navegadores
  • Codifica JSON de forma segura

Gestión de Secretos

Nunca Hardcodees Secretos

# ❌ Mal
API_KEY = "sk-live-abc123"

# ✅ Bien
API_KEY = os.environ.get("API_KEY")

Usa un Gestor de Secretos

HerramientaCaso de uso
HashiCorp VaultEnterprise, políticas complejas
AWS Secrets ManagerAplicaciones nativas de AWS
Azure Key VaultAplicaciones nativas de Azure
DopplerMulti-cloud, developer-friendly
1Password SecretsEquipos pequeños, setup simple

Seguridad de Dependencias

Mantén Dependencias Actualizadas

# Escanear vulnerabilidades
npm audit
pip-audit
snyk test

Archivos de Lock

Siempre commitea archivos de lock (package-lock.json, poetry.lock, Cargo.lock) para asegurar builds reproducibles.

Prevención del OWASP Top 10

VulnerabilidadPrevención
InjectionQueries parametrizadas, validación de inputs
Broken Access ControlDenegar por defecto, forzar ownership
Cryptographic FailuresHTTPS en todas partes, encriptar en reposo
Insecure DesignThreat modeling, requerimientos de seguridad
Security MisconfigurationPlataformas mínimas, remover defaults
Vulnerable ComponentsEscaneo de dependencias, auto-updates
Auth FailuresMFA, contraseñas fuertes, límites de sesión
Software IntegrityVerificar paquetes, commits firmados
Logging FailuresLoggear todos los eventos de auth, monitorear anomalías
SSRFWhitelist de URLs, deshabilitar protocolos innecesarios

Comunicación Segura

HTTPS en Todas Partes

  • Redirige HTTP a HTTPS
  • Usa headers HSTS
  • Mantén certificados TLS actualizados

Seguridad de APIs

  • Rate limiting (prevenir fuerza bruta)
  • Versionado de APIs (deprecación graceful)
  • Firmado de requests (verificar integridad)

Logging & Monitoreo

Qué Loggear

  • Intentos de autenticación (éxito y fracaso)
  • Fallas de autorización
  • Errores de validación de input
  • Patrones de tráfico inusuales

Qué NO Loggear

  • Contraseñas
  • API keys
  • Información médica personal
  • Números de tarjeta de crédito

Security Checklist

  • Autenticación usa MFA donde se requiere
  • Autorización verifica ownership del recurso
  • Todos los inputs validados y sanitizados
  • Secretos almacenados en un gestor de secretos
  • Dependencias escaneadas por vulnerabilidades
  • HTTPS forzado para todo el tráfico
  • Headers de seguridad configurados (CSP, HSTS)
  • Rate limiting habilitado en APIs públicas
  • Datos sensibles encriptados en reposo
  • Eventos de seguridad loggeados y monitoreados

FAQ

Q: ¿Con qué frecuencia debería actualizar dependencias? A: Al menos mensualmente. Habilita Dependabot o Renovate para PRs automatizados.

Q: ¿Es JWT seguro? A: JWT es seguro cuando se implementa correctamente: expiración corta, algoritmos de firma fuertes (RS256/ES256), almacenamiento seguro de secretos, y transmisión solo por HTTPS.

Q: ¿Debería encriptar todo en la base de datos? A: Encripta campos sensibles (PII, credenciales, tokens). La encriptación en reposo debería estar habilitada a nivel de base de datos.