Aller au contenu

RGPD & Protection des données

Privacy by Design

qr3.app est conçu dès le départ pour être conforme au RGPD :

  • Pseudonymisation des IP — Les adresses IP sont immédiatement converties en pseudonymes HMAC-SHA-256 du jour UTC dans le Worker Edge. L’adresse IP d’origine n’est jamais stockée ; le pseudonyme reste une donnée personnelle.
  • Minimisation des données — Seules les données nécessaires au fonctionnement sont collectées.

API Privacy

Résumé des données (Art. 15 RGPD)

GET /v1/account/privacy — Retourne un aperçu de toutes les données stockées.

Fenêtre de terminal
curl https://qr3.app/v1/account/privacy \
-H "Authorization: Bearer qr3_sk_..."

Response:

{
"data": {
"workspace_id": "ws_xxx",
"stored_data": {
"qr_codes": { "count": 42, "oldest_at": "2026-03-01T..." },
"scan_records": { "count": 15000, "oldest_at": "2026-03-01T..." },
"api_keys": { "count": 2 },
"webhooks": { "count": 1 }
},
"your_rights": {
"access": "GET /v1/account/export",
"erasure": "DELETE /v1/account",
"contact": "[email protected]"
},
"data_processing": {
"legal_basis": "Contract performance (Art. 6(1)(b) GDPR)",
"sub_processors": [
{ "name": "Cloudflare, Inc.", "purpose": "CDN, edge computing, database" }
]
}
}
}

Export des données (Art. 20 RGPD — Portabilité des données)

GET /v1/account/export — Télécharge toutes les données sous forme de fichier JSON.

Fenêtre de terminal
curl https://qr3.app/v1/account/export \
-H "Authorization: Bearer qr3_sk_..." \
-o meine-daten.json

L’export contient :

  • Tous les QR Codes (y compris ceux supprimés)
  • Des statistiques de scan agrégées (pas de hachages IP bruts)
  • Les horodatages de création et de modification

Supprimer le compte (Art. 17 RGPD — Droit à l’oubli)

DELETE /v1/account — Suppression irréversible de toutes les données.

Fenêtre de terminal
curl -X DELETE https://qr3.app/v1/account \
-H "Authorization: Bearer qr3_sk_..."

Ce qui se passe :

  1. Tous les QR Codes sont soft-deleted (archivés)
  2. Tous les enregistrements de scan sont définitivement supprimés (PII)
  3. Toutes les clés API sont révoquées
  4. Le cache KV est invalidé

Gérer les consentements

GET /v1/account/privacy/consents — Récupérer les consentements actuels.

POST /v1/account/privacy/consents — Mettre à jour les consentements.

Fenêtre de terminal
# Aktuelle Einwilligungen abrufen
curl https://qr3.app/v1/account/privacy/consents \
-H "Authorization: Bearer qr3_sk_..."
# Marketing-E-Mails deaktivieren
curl -X POST https://qr3.app/v1/account/privacy/consents \
-H "Authorization: Bearer qr3_sk_..." \
-H "Content-Type: application/json" \
-d '{ "marketing_emails": false, "analytics": true, "product_updates": true }'

Champs de consentement :

ChampPar défautDescription
marketing_emailsfalseNewsletter et e-mails promotionnels
analyticstrueStatistiques d’utilisation agrégées
product_updatestrueNouveautés produits et changelogs

Implémentation technique du RGPD

Pseudonymisation des IP (Art. 25 RGPD)

Requête HTTP → Cloudflare Edge Worker
En-tête CF-Connecting-IP → HMAC-SHA-256(IP_HASH_SALT, finalité, jour UTC, IP)
ip_hash (pseudonyme quotidien) → base de données D1
L'adresse IP d'origine n'est jamais stockée

IP_HASH_SALT est un secret maître de longue durée ; la finalité et le jour UTC dérivent automatiquement des pseudonymes quotidiens distincts. Les pseudonymes de jours UTC différents ne sont pas directement identiques, mais le détenteur du secret peut recalculer un candidat d’adresse IP connu pour un jour donné. Aucun sel quotidien KV ni rotation manuelle quotidienne n’est utilisé.

Rétention des données (automatisée)

PlanRétention
Tous les forfaits90 jours

DPA sous-traitant

Cloudflare, Inc. traite les données en tant que sous-traitant. L’accord de traitement des données (DPA) est disponible sur cloudflare.com/cloudflare-customer-dpa.

Cloudflare traite les données sur des serveurs situés dans l’UE (Francfort). Les clauses contractuelles types (CCT) conformément à l’Art. 46 RGPD sont en vigueur.


Contact