Security Starts at Design
A QR code that routes users to an insecure destination, an unverifiable URL, or a page that could be impersonated is a security risk regardless of your intentions. Secure QR design integrates trust and safety at the point of creation.Principle 1: Always Use HTTPS
Every QR code destination must be HTTPS. An HTTP destination:- Transmits data in clear text (interceptable on public networks) - Shows a "Not secure" warning in most browsers - Signals to users that the page may not be trustworthy - Violates the baseline expectations of any modern web user
Obtain an SSL certificate for your domain. Free options via Let's Encrypt are available for any domain. There is no legitimate reason to use HTTP for any user-facing QR destination in the current environment.
Principle 2: Use Recognisable, Owned Domains
The URL a user sees when they preview a QR scan should immediately tell them where they are going. Compare:- `menu.yourbrand.com` — owned, recognisable, trustworthy - `qr-8xkz29.dynamicqr-service.io` — unfamiliar, raises suspicion
Use your own domain for QR redirect URLs wherever possible. If using a third-party QR service with their domain, verify the service's reputation and ensure users will recognise or can verify the domain.
Principle 3: Validate Destinations Before Printing
Before printing any QR code at scale:1. Scan the QR and verify the URL preview matches the expected destination 2. Visit the URL and verify the page loads correctly with HTTPS 3. Test on multiple devices (iOS and Android) 4. Verify the destination page has the correct branding and content
Catching a wrong destination before printing 10,000 labels is trivially easy. After printing, it is expensive and embarrassing.
Principle 4: Single-Use Validation for High-Value QRs
Tickets, coupons, access passes, and one-time-use codes should be validated server-side and invalidated after first use. This prevents:- Screenshot sharing - Duplicate redemption - Screenshot interception (scan-in-transit attacks)
Principle 5: Display URL Transparency
For any QR displayed publicly, include the destination URL as text alongside the QR. This enables users to:- Verify the domain before scanning - Type the URL if they prefer not to scan - Identify tampering (if the scanned URL does not match the printed URL)
URL transparency is a simple, zero-cost trust signal that significantly reduces the risk of users being deceived by tampered QR codes.
