XG Blur XG Blur
CA ES EN
🔑 Log in ✨ Sign up
⚖️ Security & legal compliance

XG Blur complies with GDPR, LOPDGDD and LO 1/1982

This page is meant for DPOs, compliance officers and buyers. It documents how we process data and guarantee user rights.

⚠️ This content is informational and does not replace a formal analysis by the data controller's DPO.

Reference legal framework

Three main regulations govern the processing of minors' images in Spain.

How XG Blur applies these rules

Documentation of the technical and organisational measures implemented.

✅ Explicit, informed consent

Each user (or their guardian) must actively tick the "I grant image rights" box. The box is never pre-checked. The adjacent text explains the consequences.

📅 Traceability with date and time

Each consent change is saved with a timestamp in the database. This mark is legal evidence before any AEPD audit or later claim.

📧 Automatic notification to centres

All linked centres get an immediate email when one of their members changes consent. No centre can claim they didn't know.

🎯 Granular per-centre consents

A user can have different decisions for each centre they are linked to. For example: accept at school but not at summer camp. The system applies the specific decision of the context processing the image.

👶 Special treatment of minors

Under 18: consent over one's own image is always granted by the legal representative (LO 1/1982). The minor cannot decide alone, not even at 16 or 17. From 18: exclusive control by the holder.

🔓 Immediate revocability

A user can withdraw consent from their profile anytime. They can also leave a centre with one click. The new state propagates to the next processing, and all centres are notified.

🔒 Role-based privacy

When someone processes a photo, only admins or the linked centre see real names. Everyone else sees "Registered person". Names are never printed on the final image; they live only in the permissioned table. Strict application of the minimisation principle (GDPR art. 5.1.c).

⏳ Controlled retention

Processed photos are kept for 48 hours (free) or 30 days (premium). Then an internal scheduler deletes them automatically from the database and disk. No copy is kept indefinitely.

🇪🇺 EU hosting and data

All processing happens on the server in Spain. Emails are served via EU SMTP. No international data transfers outside the EEA.

User rights (GDPR art. 15-22)

XG Blur lets you exercise all rights recognised by the GDPR.

Right of access (art. 15)

Each user can see their data, facial encodings, linked centres and consent decisions from their profile.

Right to rectification (art. 16)

The user can modify their personal data and password anytime from their own profile.

Right to erasure (art. 17)

Full account and facial encoding deletion can be requested. Cascade: it also deletes all related records (photos, consents).

Right to object (art. 21)

The user can withdraw consent for a specific centre without affecting others. They can also hide their face in a one-off photo without logging in.

Right to portability (art. 20)

Upon request to the DPO, an export of personal data is provided in a structured format (JSON/SQL).

Right not to be profiled (art. 22)

Facial recognition is only used to apply consents. No commercial or advertising profiling is created.

Technical security measures

Defences at server, transport and database level.

🔐 Always HTTPS

Automatic Let's Encrypt TLS certs. HSTS with one-year maxAge. Content is never exposed over plain HTTP.

🛡️ Security headers

X-Frame-Options: DENY, X-Content-Type-Options: nosniff, strict Referrer-Policy, restrictive Permissions-Policy.

🔒 Hashed passwords

Werkzeug PBKDF2 with random salt. Passwords are never stored in plain text.

🔐 Two-factor login

Each login requires a 6-digit PIN sent by email. Even if someone gets the password, they cannot enter without email access.

📷 Private photos blocked

Facial registration images are inaccessible via direct URL. They are only served via Flask with authorisation.

🎫 Signed tokens

Login-free actions (like hiding a face in a photo) use tokens cryptographically signed with the SECRET_KEY. They cannot be forged.

🛡️ CSRF protection

All forms and AJAX requests carry a unique per-session CSRF token. It blocks malicious cross-site requests.

⏱️ Rate limiting

Strict limits on /login, /registre and /recupera_contrasenya to prevent brute-force attacks and user enumeration.

💾 Backups

Daily backup of code, database, uploads and configuration. 14-day rotation with optional off-site copy.

🩺 Healthcheck + auto-recovery

The container has a healthcheck that probes /healthz every 30s. If the app hangs, Docker restarts it automatically. Optional external monitoring via UptimeRobot.

📦 Per-centre quotas

Each centre has an adjustable active-photo limit. If you exceed it due to a downgrade you get 30 grace days before the automatic trim, and the oldest photos go to the trash first (7 days to recover them).

Need more information?

If you're a DPO or compliance officer and need a more detailed analysis (RoPA, technical documentation, data-processor agreement...), let's talk.

📧 Contact XG Innova