Legal
Seguridad
Cómo protegemos tus datos. Sin marketing — los detalles técnicos verificables.
1. Nuestra filosofía
Marcly procesa datos sensibles de tu negocio y de tus clientes. La seguridad no es una feature — es un requisito de base. Aplicamos defensa en profundidad: cada capa asume que la anterior puede fallar y agrega controles propios.
Esta página es un snapshot de prácticas reales en el código y la infraestructura, no aspiraciones.
La actualizamos cuando cambia algo material (último update: 2026-05-02).
2. Cifrado de datos
En tránsito
- TLS 1.3 obligatorio en todas las conexiones públicas (con HSTS, max-age 1 año).
- Validación estricta de certificados Postgres (
rejectUnauthorized: true) — sin downgrades. - Cookies de sesión con flags
Secure+HttpOnly+SameSite=Lax.
En reposo
- Base de datos PostgreSQL cifrada por disco (provisto por Railway).
- Almacenamiento de archivos (Cloudflare R2) cifrado por defecto en cada bucket.
- Tokens de WhatsApp por tenant cifrados con AES-256-GCM (envelope encryption con clave maestra), formato
v1.con soporte para rotación.
Hashes y secretos
- Contraseñas hasheadas con bcrypt cost 12 (binding nativo Rust, ~25 ms por hash).
- IPs registradas hasheadas con SHA-256 + sal (no se almacenan IPs en claro).
- Tokens de verificación: 256 bits de entropía, hasheados antes de persistir, single-use.
3. Autenticación y sesiones
- NextAuth v5 con sesiones JWT cifradas (no JWS — usa A256CBC-HS512).
- Sesión activa de 14 días con renovación rolling cada 24 h (revocación automática post-inactividad).
- Captcha (Cloudflare Turnstile) en signup y en booking público anónimo.
- Rate-limit por IP y email en login (5 fallos / 15 min por email, 20 / 15 min por IP).
- Verificación bcrypt antes de delegar a NextAuth — evita timing leaks.
- Lockout temporal automático tras burst sospechoso.
4. Aislamiento multi-tenant
Marcly es multi-tenant: muchos negocios comparten infraestructura pero nunca pueden ver datos de otro. Aplicamos un patrón estricto al nivel de cada query mutación:
- Cada server action que toca datos derivados del usuario incluye
where: { id, businessId }compuesto. - Helper
requireBusinessOwnership()deriva elbusinessIdde la sesión, NUNCA del input del cliente. - Helper
assertAffected()verifica que la mutación tocó exactamente el row esperado — si tocó 0, registramos SecurityEvent: idor_attempt. - Auditoría externa (mayo 2026) confirmó cero IDOR cross-tenant en 16 server actions.
5. Infraestructura
- Hosting: Railway (Estados Unidos), contenedor Docker Node 22 hardened (USER non-root, multi-stage, no dev deps en runtime).
- Base de datos: PostgreSQL gestionada por Railway (backups automáticos diarios + retención 7 días).
- Almacenamiento de archivos: Cloudflare R2 con custom domain
images.marcly.app, allowlist estricto del bucket propio. - CDN + WAF + DNS: Cloudflare (DDoS L3-7, bot management, geo-restricciones disponibles).
- Email: Resend (DKIM + SPF + DMARC alineados en
marcly.app). - WhatsApp: Twilio Business API (firma HMAC-SHA1 verificada en cada webhook + idempotencia por
MessageSid).
Cabeceras de seguridad
Configuradas en cada respuesta:
Content-Security-Policycon allowlist estricto (solo dominios propios + R2 + Turnstile)Strict-Transport-Security(HSTS, 1 año, includeSubDomains)X-Frame-Options: DENY,X-Content-Type-Options: nosniffCross-Origin-Opener-Policy: same-origin+Cross-Origin-Resource-Policy: same-originReferrer-Policy: strict-origin-when-cross-originPermissions-Policydenegando cámara, micrófono, geo, USB, bluetooth y sensores
6. Sub-procesadores y proveedores
Los proveedores en los que confiamos para operar el servicio:
| Proveedor | Propósito | Ubicación |
|---|---|---|
| Railway Corp. | Hospedaje de la aplicación y base de datos PostgreSQL | Estados Unidos |
| Cloudflare, Inc. | Almacenamiento de archivos (R2), CDN, DNS, Turnstile (anti-bot) | Global / Estados Unidos |
| Twilio, Inc. | Envío y recepción de mensajes WhatsApp Business | Estados Unidos |
| Meta Platforms, Inc. | Plataforma WhatsApp Business API (a través de Twilio) | Estados Unidos / Irlanda |
| Resend, Inc. | Envío de correos transaccionales (verificación, recordatorios) | Estados Unidos |
Cada uno está obligado por contrato a procesar datos solo conforme a nuestras instrucciones y aplicar medidas de seguridad equivalentes. Lista actualizada en la Política de Privacidad.
7. Auditorías y testing continuo
SAST + Dependency Scanning
- Semgrep CE en CI: bloquea merge si encuentra patrón vulnerable conocido.
- OSV-Scanner en CI: bloquea CVEs HIGH/CRITICAL en dependencias.
- Dependabot: PRs automáticos semanales para deps + actions + Docker.
- Gitleaks: scan de secretos en pre-commit y CI.
Auditoría manual
- Auditoría completa contra OWASP Top 10 2021 + OWASP API Top 10 2023 + ASVS 4.0 Level 2 en mayo 2026.
- Re-auditoría planificada antes de cada milestone mayor.
- Code review obligatorio en cada cambio que toca auth, crypto, multi-tenant o webhooks.
Visibilidad
- Tabla
SecurityEventregistra: intentos IDOR, firmas Twilio inválidas, lookups de canales no-ACTIVE, login lockouts. - Retención 90 días, prune automático.
- Logs de aplicación con redacción de secretos (emails, JWTs, API keys, Bearer tokens, teléfonos).
8. Respuesta a incidentes
Si se confirma una brecha de seguridad que afecte tus datos:
- Notificación: te avisaremos por email dentro de 72 horas de la confirmación (alineado con GDPR Art. 33).
- Información incluida: qué datos se vieron afectados, cuándo, qué hicimos para contener, qué deberías hacer vos.
- Notificación a autoridades: cuando aplique (UE: a la APD competente; Brasil: ANPD; California: AG).
- Postmortem público: publicaremos un postmortem técnico (sin detalles que faciliten exploits) en nuestro blog dentro de 14 días.
9. Divulgación responsable
Compromiso con investigadores de buena fe:
- No iniciaremos acciones legales si seguís nuestras reglas (no DoS, no acceso a datos de terceros, no destrucción).
- Acreditación pública en hall of fame (con tu permiso).
- No tenemos programa de bug bounty pagado todavía — está en el roadmap para cuando ganemos tracción.
10. Roadmap de cumplimiento
Lo que tenemos hoy y lo que viene:
- ✅ OWASP Top 10 2021 + ASVS L2: auditado, sin findings críticos abiertos.
- ✅ GDPR / CCPA / LGPD: cubierto en políticas; mecanismos de derechos disponibles.
- 🟡 SOC 2 Type I: evaluación de readiness en Q3 2026.
- 🟡 SOC 2 Type II: objetivo 2027.
- 🟡 ISO 27001: cuando lleguemos a 500+ clientes activos.
- ⚪ HIPAA: no aplicable (no procesamos PHI). Si querés usar Marcly para servicios médicos, contactanos antes.
- ⚪ PCI-DSS: no aplicable (no almacenamos datos de tarjetas — los procesa el procesador de pagos).
11. Contacto
Vulnerabilidades / divulgación responsable: security@marcly.app
Preguntas generales sobre seguridad: security@marcly.app
Asuntos de privacidad: privacy@marcly.app
Marcly · 75 avenida norte, local 3, San Salvador, El Salvador