RODO i ochrona danych
Privacy by Design
qr3.app został zaprojektowany od podstaw z myślą o zgodności z RODO:
- Pseudonimizacja IP — adresy IP są natychmiast konwertowane w Edge Worker na pseudonimy HMAC-SHA-256 dnia UTC. Oryginalny adres IP nigdy nie jest przechowywany; pseudonim pozostaje daną osobową.
- 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
Pseudonimizacja IP (art. 25 RODO)
Żądanie HTTP → Cloudflare Edge Worker ↓Nagłówek CF-Connecting-IP → HMAC-SHA-256(IP_HASH_SALT, cel, dzień UTC, IP) ↓ip_hash (dzienny pseudonim) → baza danych D1 ↓Oryginalny adres IP nigdy nie jest przechowywanyIP_HASH_SALT jest długotrwałym głównym sekretem; cel i dzień UTC automatycznie wyprowadzają odrębne dzienne pseudonimy. Pseudonimy z różnych dni UTC nie są bezpośrednio takie same, lecz posiadacz sekretu może ponownie obliczyć znanego kandydata IP dla konkretnego dnia. Nie stosuje się dziennej soli w KV ani ręcznej codziennej rotacji.
Retencja danych (automatyczna)
| Plan | Retencja |
|---|---|
| Wszystkie plany | 90 dni |
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