VOLTA · 11-privacy-security.md · 13 de 22

En esta página 1. Contexto 0%

11 — Privacidad y seguridad — VOLTA

1. Contexto

VOLTA trata datos de contacto y preferencias de clase de visitantes (PII ligera) y credenciales del coach.
Alcance L1 demo: no es un DPIA formal; documenta decisiones de diseño y controles implementados.

2. Datos tratados

DatoEntidadSensibilidadBase demo
Nombre completoClassRequestPIIConsentimiento implícito al enviar form [DECISIÓN demo]
EmailClassRequest / UserPIIIgual
TeléfonoClassRequestPIIOpcional
Preferencias clase/día/franjaClassRequestBajaNecesarias al servicio
NotasClassRequestVariableTexto libre del visitante
PasswordUserSecretoSolo hash bcrypt
JWTClienteSesiónlocalStorage (demo)

3. Superficies de exposición

SuperficieRiesgoControl v1
POST /api/requestsSpam / PII entradaValidación DTO; rate-limit futuro
GET /api/requestsFiltración lista PIIJwtAuthGuard obligatorio
GET /api/requests/:idPII individualJWT
PATCH statusAbuso de estadoJWT
LoginFuerza brutabcrypt; rate-limit futuro
localStorage tokenXSS robo sesiónApp trusted demo; CSP futuro

4. Controles de seguridad implementados

ControlEstado
Passwords hasheados bcrypt
JWT firmado con JWT_SECRET
Rutas coach protegidas
Create público solo POST
Password en respuestasNo (nunca)
HTTPS en producciónRecomendado (Neon + host)
CORS restringido prodConfigurar al desplegar

5. Autorización

ActorPuede
AnónimoPOST request; ver páginas públicas
COACH autenticadoListar, ver detalle, cambiar status
Sin rol MEMBERNo existe en v1

6. Privacidad (RGPD — orientación)

PrincipioAplicación v1
MinimizaciónCampos justos para contactar y preferir clase
Limitación finalidadGestión de plazas del club
ConservaciónDemo seed; política de borrado no automatizada
Derechos ARCO/RGPDProceso manual fuera de app
TransparenciaMejorable: enlace política L1+
Consentimiento kidsNotas “hija 8 años” en seed = ejemplo; en prod se requeriría base legal parental [HIPÓTESIS legal]

No se afirma cumplimiento RGPD certificado. Es un mapa de riesgos para el case.

7. Amenazas y mitigaciones

AmenazaImpactoMitigación
Enumeración de inbox sin authAltoGuard JWT
Spam de solicitudesMedioValidación; captcha L1+
Token en localStorageMedioDemo; HttpOnly cookie L2
Secret débil JWTAltoEnv no commitear
Notas con datos sensiblesMedioCopy: evitar datos médicos
Credenciales demo públicasBajo (demo)Documentadas a propósito

8. Logging y secretos

Regla
No loguear passwords ni tokens completos
DATABASE_URL y JWT_SECRET solo en .env
Seed password solo en docs de demo

9. Checklist de seguridad demo

#Check
S1GET /api/requests sin header → 401
S2PATCH sin header → 401
S3Login password incorrecto → 401
S4Password no en JSON de user
S5.env no en git

10. Evolución recomendada (no deuda L1)

  • Rate limiting + captcha en POST público
  • Consent checkbox + política de privacidad
  • Rotación JWT / refresh
  • Soft-delete y retención configurable
  • Audit log de cambios de status