Légal
Sécurité
Comment nous protégeons vos données. Sans marketing — détails techniques vérifiables.
1. Notre philosophie
Marcly traite des données sensibles de votre entreprise et de vos clients. La sécurité n'est pas une fonctionnalité — c'est une exigence de base. Nous appliquons une défense en profondeur : chaque couche assume que la précédente peut échouer et ajoute ses propres contrôles.
Cette page est un instantané des pratiques réelles dans le code et l'infrastructure, pas
des aspirations. Nous la mettons à jour lors de changements matériels (dernière mise à jour :
2026-05-02).
2. Chiffrement des données
En transit
- TLS 1.3 obligatoire sur toutes les connexions publiques (avec HSTS, max-age 1 an).
- Validation stricte des certificats Postgres (
rejectUnauthorized: true) — sans downgrades. - Cookies de session avec flags
Secure+HttpOnly+SameSite=Lax.
Au repos
- Base de données PostgreSQL chiffrée au niveau disque (fournie par Railway).
- Stockage de fichiers (Cloudflare R2) chiffré par défaut par bucket.
- Tokens WhatsApp par tenant chiffrés avec AES-256-GCM (envelope encryption avec clé maître), format
v1.avec support de rotation.
Hachages et secrets
- Mots de passe hachés avec bcrypt cost 12 (binding natif Rust, ~25 ms par hash).
- IPs journalisées hachées avec SHA-256 + sel (pas d'IPs en clair).
- Tokens de vérification : 256 bits d'entropie, hachés avant persistance, à usage unique.
3. Authentification et sessions
- NextAuth v5 avec sessions JWT chiffrées (pas JWS — utilise A256CBC-HS512).
- Session active de 14 jours avec renouvellement glissant toutes les 24h (révocation auto sur inactivité).
- Captcha (Cloudflare Turnstile) sur l'inscription et la réservation publique anonyme.
- Rate-limit par IP et e-mail sur la connexion (5 échecs / 15 min par e-mail, 20 / 15 min par IP).
- Vérification bcrypt avant délégation à NextAuth — prévient les fuites de timing.
- Verrouillage temporaire automatique après burst suspect.
4. Isolation multi-tenant
Marcly est multi-tenant : de nombreuses entreprises partagent l'infrastructure mais ne peuvent jamais voir les données des autres. Nous appliquons un patron strict au niveau de chaque requête de mutation :
- Chaque server action touchant des données dérivées de l'utilisateur utilise
where: { id, businessId }composite. - Helper
requireBusinessOwnership()dérive lebusinessIdde la session, JAMAIS de l'input client. - Helper
assertAffected()vérifie que la mutation a touché exactement la ligne attendue — si elle a touché 0, nous journalisons SecurityEvent: idor_attempt. - Audit externe (mai 2026) a confirmé zéro IDOR cross-tenant sur 16 server actions.
5. Infrastructure
- Hébergement : Railway (États-Unis), conteneur Docker Node 22 hardened (USER non-root, multi-stage, sans dev deps en runtime).
- Base de données : PostgreSQL géré par Railway (sauvegardes auto quotidiennes + rétention 7 jours).
- Stockage de fichiers : Cloudflare R2 avec domaine personnalisé
images.marcly.app, allowlist strict du bucket propre. - CDN + WAF + DNS : Cloudflare (DDoS L3-7, bot management, géo-restrictions disponibles).
- E-mail : Resend (DKIM + SPF + DMARC alignés sur
marcly.app). - WhatsApp : Twilio Business API (signature HMAC-SHA1 vérifiée sur chaque webhook + idempotence par
MessageSid).
En-têtes de sécurité
Configurés sur chaque réponse :
Content-Security-Policyavec allowlist strict (uniquement domaines propres + R2 + Turnstile)Strict-Transport-Security(HSTS, 1 an, 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-Policyrefusant caméra, micro, géo, USB, bluetooth et capteurs
6. Sous-traitants et fournisseurs
Les fournisseurs sur lesquels nous nous appuyons pour faire fonctionner le service :
| Fournisseur | Finalité | Lieu |
|---|---|---|
| Railway Corp. | Hébergement de l'application et base de données PostgreSQL | Estados Unidos |
| Cloudflare, Inc. | Stockage de fichiers (R2), CDN, DNS, Turnstile (anti-bot) | Global / Estados Unidos |
| Twilio, Inc. | Envoi et réception de messages WhatsApp Business | Estados Unidos |
| Meta Platforms, Inc. | Plateforme WhatsApp Business API (via Twilio) | Estados Unidos / Irlanda |
| Resend, Inc. | Envoi d'e-mails transactionnels (vérification, rappels) | Estados Unidos |
Chacun est contractuellement tenu de traiter les données uniquement selon nos instructions et d'appliquer des mesures de sécurité équivalentes. Liste à jour dans la Politique de confidentialité.
7. Audits et tests continus
SAST + scan de dépendances
- Semgrep CE en CI : bloque le merge sur des patrons vulnérables connus.
- OSV-Scanner en CI : bloque les CVEs HIGH/CRITICAL sur les dépendances.
- Dependabot : PRs auto hebdomadaires pour deps + actions + Docker.
- Gitleaks : scan de secrets en pre-commit et CI.
Audit manuel
- Audit complet contre OWASP Top 10 2021 + OWASP API Top 10 2023 + ASVS 4.0 Level 2 en mai 2026.
- Réaudit planifié avant chaque jalon majeur.
- Code review obligatoire sur chaque changement touchant auth, crypto, multi-tenant ou webhooks.
Observabilité
- Table
SecurityEventjournalise : tentatives IDOR, signatures Twilio invalides, lookups de canaux non-ACTIFS, lockouts de connexion. - Rétention 90 jours, prune automatique.
- Logs applicatifs avec rédaction de secrets (e-mails, JWTs, clés API, tokens Bearer, téléphones).
8. Réponse aux incidents
Si une brèche de sécurité affectant vos données est confirmée :
- Notification : nous vous écrirons dans les 72 heures de la confirmation (aligné avec RGPD Art. 33).
- Information incluse : quelles données ont été affectées, quand, ce que nous avons fait pour contenir, ce que vous devriez faire.
- Notification aux autorités : lorsque applicable (UE : APD compétente ; Brésil : ANPD ; Californie : AG).
- Postmortem public : nous publierons un postmortem technique (sans détails facilitant les exploits) sur notre blog dans les 14 jours.
9. Divulgation responsable
Engagement envers les chercheurs de bonne foi :
- Nous n'engagerons pas d'action légale si vous suivez nos règles (pas de DoS, pas d'accès aux données de tiers, pas de destruction).
- Crédit public dans le hall of fame (avec votre permission).
- Pas de programme de bug bounty payant pour le moment — c'est dans la feuille de route une fois que nous aurons gagné de la traction.
10. Feuille de route conformité
Ce que nous avons aujourd'hui et ce qui vient :
- ✅ OWASP Top 10 2021 + ASVS L2 : audité, sans findings critiques ouverts.
- ✅ RGPD / CCPA / LGPD : couvert dans les politiques ; mécanismes de droits disponibles.
- 🟡 SOC 2 Type I : évaluation de readiness Q3 2026.
- 🟡 SOC 2 Type II : objectif 2027.
- 🟡 ISO 27001 : quand nous atteindrons 500+ clients actifs.
- ⚪ HIPAA : non applicable (nous ne traitons pas de PHI). Si vous voulez utiliser Marcly pour des services médicaux, contactez-nous d'abord.
- ⚪ PCI-DSS : non applicable (nous ne stockons pas de données de cartes — le processeur de paiement le fait).
11. Contact
Vulnérabilités / divulgation responsable : security@marcly.app
Questions générales de sécurité : security@marcly.app
Affaires de confidentialité : privacy@marcly.app
Marcly · 75 avenida norte, local 3, San Salvador, El Salvador