Przejdź do głównej zawartości

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.

Okno terminala
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" }
]
}
}
}

Eksport danych (art. 20 RODO — przenoszenie danych)

GET /v1/account/export — Pobiera wszystkie dane jako plik JSON.

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

Eksport 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/accountNieodwracalne usunięcie wszystkich danych.

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

Co się dzieje:

  1. Wszystkie kody QR są usuwane miękko (archiwizowane)
  2. Wszystkie rekordy skanowania są trwale usuwane (PII)
  3. Wszystkie klucze API są unieważniane
  4. 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.

Okno terminala
# 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 }'

Pola zgód:

PoleDomyślnieOpis
marketing_emailsfalseNewsletter i e-maile marketingowe
analyticstrueZagregowane statystyki użytkowania
product_updatestrueNowoś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 gespeichert

Só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:

PlanRetencja
Free7 dni
Pro90 dni
Business / Agency1 rok
EnterpriseCustom (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