Probar gratis
4 min lectura Guide 370 of 877

Prácticas de Desarrollo de Seguridad

La seguridad es responsabilidad de todos, no solo del equipo de seguridad. Las buenas prácticas de seguridad se construyen en workflows de desarrollo, no se agregan al final. Esta guía cubre prácticas de seguridad prácticas para equipos de desarrollo.

Seguridad en SDLC

FaseActividad de Seguridad
DiseñoThreat modeling
CódigoSecure coding, review
BuildSAST, dependency scan
TestDAST, pen testing
DeployContainer scan, secrets
RunMonitoring, patching

Secure Coding

PRÁCTICAS DE SECURE CODING
══════════════════════════

INPUT VALIDATION:
┌─────────────────────────────────────────────────────────────┐
│                                                             │
│  Siempre valida:                                            │
│  ├── Input del usuario                                     │
│  ├── Parámetros de API                                     │
│  ├── File uploads                                          │
│  ├── Headers                                               │
│  ├── Nunca confíes en el input                             │
│  └── Whitelist sobre blacklist                             │
│                                                             │
│  Ejemplo:                                                   │
│  // Malo                                                   │
│  const userId = req.params.id;                             │
│  db.query(`SELECT * FROM users WHERE id = ${userId}`);     │
│                                                             │
│  // Bueno                                                   │
│  const userId = parseInt(req.params.id, 10);               │
│  if (isNaN(userId)) throw new Error('Invalid ID');         │
│  db.query('SELECT * FROM users WHERE id = ?', [userId]);   │
│                                                             │
└─────────────────────────────────────────────────────────────┘

OUTPUT ENCODING:
┌─────────────────────────────────────────────────────────────┐
│                                                             │
│  ├── HTML encode para contexto HTML                        │
│  ├── URL encode para URLs                                  │
│  ├── SQL parameterize para queries                         │
│  ├── Context-aware encoding                                │
│  └── Prevenir inyección                                    │
│                                                             │
└─────────────────────────────────────────────────────────────┘

AUTHENTICATION:
┌─────────────────────────────────────────────────────────────┐
│                                                             │
│  ├── Usa librerías probadas                                │
│  ├── Requerimientos de password fuertes                    │
│  ├── Rate limiting en login                                │
│  ├── Session management seguro                             │
│  ├── MFA donde sea apropiado                               │
│  └── No hagas tu propio auth                               │
│                                                             │
└─────────────────────────────────────────────────────────────┘

AUTHORIZATION:
┌─────────────────────────────────────────────────────────────┐
│                                                             │
│  ├── Check en cada request                                 │
│  ├── Deny by default                                       │
│  ├── Principle of least privilege                          │
│  ├── Valida ownership                                      │
│  └── No confíes en client-side checks                      │
│                                                             │
└─────────────────────────────────────────────────────────────┘

Herramientas de Seguridad

TOOLCHAIN DE SEGURIDAD
══════════════════════

SAST (Static Analysis):
┌─────────────────────────────────────────────────────────────┐
│                                                             │
│  • Analiza código fuente                                   │
│  • Encuentra vulnerabilidades sin ejecutar                 │
│  • Integra en IDE y CI                                     │
│  • Herramientas: SonarQube, Semgrep, CodeQL                │
│                                                             │
└─────────────────────────────────────────────────────────────┘

DEPENDENCY SCANNING:
┌─────────────────────────────────────────────────────────────┐
│                                                             │
│  • Encuentra vulnerabilidades en dependencias              │
│  • Alerta sobre CVEs conocidas                             │
│  • Automatiza updates                                      │
│  • Herramientas: Snyk, Dependabot, npm audit               │
│                                                             │
└─────────────────────────────────────────────────────────────┘

SECRET DETECTION:
┌─────────────────────────────────────────────────────────────┐
│                                                             │
│  • Encuentra secrets en código                             │
│  • Pre-commit hooks                                        │
│  • Escanea historial de git                                │
│  • Herramientas: GitGuardian, TruffleHog                   │
│                                                             │
└─────────────────────────────────────────────────────────────┘

DAST (Dynamic Analysis):
┌─────────────────────────────────────────────────────────────┐
│                                                             │
│  • Prueba aplicación en ejecución                          │
│  • Encuentra runtime vulnerabilities                       │
│  • Simula ataques                                          │
│  • Herramientas: OWASP ZAP, Burp Suite                     │
│                                                             │
└─────────────────────────────────────────────────────────────┘

En GitScrum

SEGURIDAD EN GITSCRUM
═════════════════════

TRACKING DE VULNERABILIDADES:
┌─────────────────────────────────────────────────────────────┐
│                                                             │
│  • Tarjeta por vulnerabilidad                              │
│  • Label: security-critical, security-high, etc.           │
│  • SLA en descripción                                      │
│  • Owner responsable                                       │
│  • Link a advisory                                         │
│                                                             │
└─────────────────────────────────────────────────────────────┘

WORKFLOW:
┌─────────────────────────────────────────────────────────────┐
│                                                             │
│  Identified → Triaged → In Progress → Fixed → Verified     │
│                                                             │
│  • Alerta si SLA vence                                     │
│  • Reportes de aging                                       │
│  • Métricas de time-to-fix                                 │
│                                                             │
└─────────────────────────────────────────────────────────────┘

Soluciones Relacionadas de GitScrum