Gå til indhold

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.

Terminal window
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",
"contact": "[email protected]"
},
"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.

Terminal window
curl https://qr3.app/v1/account/export \
-H "Authorization: Bearer qr3_sk_..." \
-o meine-daten.json

Eksporten 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/accountUigenkaldelig sletning af alle data.

Terminal window
curl -X DELETE https://qr3.app/v1/account \
-H "Authorization: Bearer qr3_sk_..."

Hvad der sker:

  1. Alle QR-koder bliver soft-deleted (arkiveret)
  2. Alle scanningsposter bliver permanent slettet (PII)
  3. Alle API-nøgler tilbagekaldes
  4. KV-cache invalideres

Administrer samtykker

GET /v1/account/privacy/consents — Hent aktuelle samtykker.

POST /v1/account/privacy/consents — Opdater samtykker.

Terminal window
# 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 }'

Samtykkefelter:

FeltStandardBeskrivelse
marketing_emailsfalseNyhedsbreve og reklame-e-mails
analyticstrueAggregerede brugsstatistikker
product_updatestrueProduktnyheder 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 gespeichert

Salten 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:

AbonnementDataretention
Free7 dage
Pro90 dage
Business / Agency1 år
EnterpriseCustom (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