GDPR & databeskyttelse
Privacy by Design
qr3.app er bygget til at være GDPR-kompatibel helt fra bunden:
- IP-anonymisering — IP-adresser omdannes med det samme til SHA-256-hashes (med en dagligt roterende salt) i Edge-workeren. Den originale IP-adresse når aldrig databasen.
- Retningslinjer for dataretention — Scanningsdata slettes automatisk efter en abonnementsafhængig periode (Free: 7 dage, Pro: 90 dage, Business: 1 år).
- Dataminimering — Der indsamles kun de data, der er nødvendige for driften.
Privacy-API
Dataoversigt (Art. 15 GDPR)
GET /v1/account/privacy — Returnerer en oversigt over alle gemte data.
curl https://qr3.app/v1/account/privacy \ -H "Authorization: Bearer qr3_sk_..."Svar:
{ "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", }, "data_processing": { "legal_basis": "Contract performance (Art. 6(1)(b) GDPR)", "sub_processors": [ { "name": "Cloudflare, Inc.", "purpose": "CDN, edge computing, database" } ] } }}Dataeksport (Art. 20 GDPR — dataportabilitet)
GET /v1/account/export — Downloader alle data som en JSON-fil.
curl https://qr3.app/v1/account/export \ -H "Authorization: Bearer qr3_sk_..." \ -o meine-daten.jsonEksporten indeholder:
- Alle QR-koder (inkl. slettede)
- Aggregerede scanningsstatistikker (ingen rå IP-hashes)
- Oprettelses- og ændringstidsstempler
Slet konto (Art. 17 GDPR — retten til at blive glemt)
DELETE /v1/account — Uigenkaldelig sletning af alle data.
curl -X DELETE https://qr3.app/v1/account \ -H "Authorization: Bearer qr3_sk_..."Hvad der sker:
- Alle QR-koder bliver soft-deleted (arkiveret)
- Alle scanningsposter bliver permanent slettet (PII)
- Alle API-nøgler tilbagekaldes
- KV-cache invalideres
Administrer samtykker
GET /v1/account/privacy/consents — Hent aktuelle samtykker.
POST /v1/account/privacy/consents — Opdater samtykker.
# Aktuelle Einwilligungen abrufencurl https://qr3.app/v1/account/privacy/consents \ -H "Authorization: Bearer qr3_sk_..."
# Marketing-E-Mails deaktivierencurl -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 }'Samtykkefelter:
| Felt | Standard | Beskrivelse |
|---|---|---|
marketing_emails | false | Nyhedsbreve og reklame-e-mails |
analytics | true | Aggregerede brugsstatistikker |
product_updates | true | Produktnyheder og ændringslogge |
Teknisk GDPR-implementering
IP-anonymisering (Art. 25 GDPR)
HTTP Request → Cloudflare Edge Worker ↓CF-Connecting-IP Header → SHA-256(IP + täglicher Salt) ↓ip_hash (nicht reversibel) → D1 Datenbank ↓Original-IP wird NIEMALS gespeichertSalten roterer dagligt ved midnat UTC. Dette betyder, at selv hvis salten er kendt, er det ikke muligt at korrelere IP-adresser på tværs af dage.
Dataretention (automatiseret)
Et dagligt kørende cron-job (purgeOldScans) sletter scanningsdata efter en abonnementsafhængig periode:
| Abonnement | Dataretention |
|---|---|
| Free | 7 dage |
| Pro | 90 dage |
| Business / Agency | 1 år |
| Enterprise | Custom (SLA) |
Underdatabehandler-DPA
Cloudflare, Inc. behandler data som databehandler. DPA’en er tilgængelig på cloudflare.com/cloudflare-customer-dpa.
Cloudflare behandler data på EU-servere (Frankfurt). Standardkontraktbestemmelser (SCC’er) i henhold til art. 46 GDPR er gældende.
Kontakt
- Databeskyttelsesrådgiver: [email protected]
- Databehandleraftale (DPA): [email protected] (efter anmodning)
- Privatlivspolitik: qr3.app/de/legal/datenschutz