Security
Last updated: 2025-08-04
Overview
QRScannerPicture is designed to keep your images and links safe. Decoded URLs are not executed in the page;
they only open in a separate tab with target="_blank"
and rel="noopener noreferrer"
.
Data Flow
- Images are processed in your browser to detect QR codes.
- (soon!) We only store an image and overlay metadata if you click Save & Share.
- Stored metadata includes overlay coordinates and decoded text/URLs—no tracking pixels or scripts are injected.
Storage & Retention
Shared items (image + overlay JSON) are kept to power your shareable link. You may request removal at any time—see Data Deletion.
Link Safety
- Only
http
/https
URLs are allowed. - Links open in a new tab with
noopener
to prevent tab-nabbing. - Non-URL text is displayed but not made clickable.
Transport Security
- All traffic is served over HTTPS.
- We recommend HSTS and modern TLS—see the header suggestions below.
Your Controls
- Request deletion of stored items.
- Do not upload sensitive images or secrets—treat shared links as public.
Operational Practices
- Dependencies are updated regularly to patch known CVEs.
- Logs are minimal (errors and request metadata) and used for reliability and abuse prevention.
- Rate limits and basic validations protect the API from abuse.
Security Headers (recommended)
Add these headers at the framework/edge level for stronger defaults:
Content-Security-Policy: default-src 'self'; img-src 'self' blob: data:; connect-src 'self'; frame-ancestors 'none';
Referrer-Policy: strict-origin-when-cross-origin
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
Permissions-Policy: camera=(), microphone=(), geolocation=()
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload