Audit chain SHA-256
Cada evento (subida, configuración, firma) genera una fila con hash enlazado al previo. La función SQL `validate_audit_chain` detecta cualquier ruptura.
No vendemos seguridad como adjetivo de marketing. La construimos como ingeniería: audit chain criptográfico, RLS por tenant, hosting en Frankfurt, redacción de PII en logs, derechos RGPD operativos desde la UI.
Cada evento (subida, configuración, firma) genera una fila con hash enlazado al previo. La función SQL `validate_audit_chain` detecta cualquier ruptura.
Row-Level Security en Postgres con policies sobre `tenantId`. Imposible cross-tenant data leak por aplicación incluso si hay bug en el código.
Supabase EU (Frankfurt) · Vercel EU regions · Resend con DPF. Datos personales no salen del Espacio Económico Europeo.
Endpoint export-data devuelve JSON estructurado · self-service deletion con grace 30d · admin offboarding con resolución de SRs pendientes.
Logger Pino con redacción automática de DNI español, tarjetas, magic tokens en URLs. Logs auditables sin riesgo de exfiltración.
Passwords con Argon2id · check contra Have I Been Pwned al alta · lockout tras 5 intentos fallidos · rate limiting en endpoints sensibles.
Cada `audit_event` lleva un `eventHash = SHA256(payload + previousHash)`. Si alguien manipula la BD a posteriori (incluido el admin del tenant via panel Supabase), la cadena se rompe.
Supabase encrypta a nivel de disco con AES-256. Buckets `documents`, `signatures`, `branding` privados con signed URLs TTL corta (60s preview, 7d email).
TLS 1.3 obligatorio. HSTS preload con max-age 1 año. Mozilla Observatory grade A+.
Por defecto el Certificate of Completion enmascara DNI a `***1234X`. Tenant puede activar visibilidad completa con audit del cambio.
Pino con redacción de paths sensibles (auth, password, token, magicToken) + regex matchers para DNI/tarjetas/tokens en URLs.
Anonimización inmediata + grace 30d + cron purga de blobs y datos blandos. Audit chain preservada (anonimizada, no destruida).
`GET /api/users/me/export-data` devuelve JSON estructurado con metadata RGPD. Throttle 3/h por user.
`PATCH /api/users/me` permite editar nombre, email, DNI, foto. Cada cambio audita `USER_PROFILE_UPDATED`.
`POST /api/users/me/request-deletion` self-service · grace 30d · cron purga · admin offboarding con resolución de SRs PENDING.
Toggle `notifyOnSignature` opt-in en `/settings/profile` · admin puede deshabilitar tracking analítico futuro.
Empleados internos: consent una vez en onboarding. Externos: por documento. Audit `USER_CONSENT_ACCEPTED` + `SIGNER_CONSENT_RECORDED` con hash + version.
Template ES con cláusulas Art. 28 RGPD. Subprocessors documentados. Brecha: notificación 72h via runbook.
Firma electrónica simple (SES) en plenitud Art. 26. Activable AES y QES en Custom.
Minimización, finalidad limitada, derechos operativos, base legal documentada.
Aplicación en territorio español. DNI masking por defecto. DPO accesible.
Cookies estrictamente necesarias (Art. 22.2 exención). Comercio electrónico legal.
Política de seguridad documentada. Audit por tercera parte planificado para Q4 2026.
Type II disponible para clientes Custom enterprise. Subprocessors con SOC 2 verificable.
Lista completa actualizada. Cualquier nuevo subprocesador requiere actualización del DPA y aviso al tenant con 30 días de antelación.
Endpoint público sin autenticación. Arrastras el PDF firmado, calculamos su SHA-256 cliente-side via Web Crypto, comparamos con el hash registrado. Coincide → auténtico. No coincide → modificado.