RODO i ochrona danych
Privacy by Design
qr3.app został zaprojektowany od podstaw z myślą o zgodności z RODO:
- Anonimizacja IP — adresy IP są natychmiast konwertowane w Edge-Worker na skróty SHA-256 (z codziennie rotowaną solą). Oryginalny adres IP nigdy nie trafia do bazy danych.
- Polityki retencji (Retention Policies) — dane skanowania są automatycznie usuwane po okresie zależnym od planu (Free: 7 dni, Pro: 90 dni, Business: 1 rok).
- Minimalizacja danych — gromadzone są wyłącznie dane niezbędne do działania usługi.
Privacy-API
Podsumowanie danych (art. 15 RODO)
GET /v1/account/privacy — Zwraca podsumowanie wszystkich przechowywanych danych.
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", }, "data_processing": { "legal_basis": "Contract performance (Art. 6(1)(b) GDPR)", "sub_processors": [ { "name": "Cloudflare, Inc.", "purpose": "CDN, edge computing, database" } ] } }}Eksport danych (art. 20 RODO — przenoszenie danych)
GET /v1/account/export — Pobiera wszystkie dane jako plik JSON.
curl https://qr3.app/v1/account/export \ -H "Authorization: Bearer qr3_sk_..." \ -o meine-daten.jsonEksport zawiera:
- Wszystkie kody QR (w tym usunięte)
- Zagregowane statystyki skanowania (brak surowych skrótów IP)
- Znaczniki czasu utworzenia i modyfikacji
Usuwanie konta (art. 17 RODO — prawo do bycia zapomnianym)
DELETE /v1/account — Nieodwracalne usunięcie wszystkich danych.
curl -X DELETE https://qr3.app/v1/account \ -H "Authorization: Bearer qr3_sk_..."Co się dzieje:
- Wszystkie kody QR są usuwane miękko (archiwizowane)
- Wszystkie rekordy skanowania są trwale usuwane (PII)
- Wszystkie klucze API są unieważniane
- Pamięć podręczna KV jest unieważniana
Zarządzanie zgodami
GET /v1/account/privacy/consents — Pobieranie aktualnych zgód.
POST /v1/account/privacy/consents — Aktualizacja zgód.
# 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 }'Pola zgód:
| Pole | Domyślnie | Opis |
|---|---|---|
marketing_emails | false | Newsletter i e-maile marketingowe |
analytics | true | Zagregowane statystyki użytkowania |
product_updates | true | Nowości produktowe i dzienniki zmian (changelogi) |
Techniczna implementacja RODO
Anonimizacja IP (art. 25 RODO)
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 gespeichertSól (salt) rotuje codziennie o północy UTC. Dzięki temu, nawet przy znajomości soli, niemożliwa jest korelacja adresów IP między różnymi dniami.
Retencja danych (automatyczna)
Codziennie uruchamiane zadanie cron (purgeOldScans) usuwa dane skanowania po okresie zależnym od planu:
| Plan | Retencja |
|---|---|
| Free | 7 dni |
| Pro | 90 dni |
| Business / Agency | 1 rok |
| Enterprise | Custom (SLA) |
Umowa DPA z podprocesorami
Cloudflare, Inc. przetwarza dane jako podmiot przetwarzający. Umowa DPA jest dostępna pod adresem cloudflare.com/cloudflare-customer-dpa.
Cloudflare przetwarza dane na serwerach w UE (Frankfurt). Obowiązują Standardowe Klauzule Umowne (SCC) zgodnie z art. 46 RODO.
Kontakt
- Inspektor Ochrony Danych: [email protected]
- Umowa powierzenia przetwarzania danych (DPA): [email protected] (na żądanie)
- Polityka prywatności: qr3.app/de/legal/datenschutz