Sikkerhet

Sikkerhetsmodellen vår i én setning: det er ingenting på en server å angripe. Alt nedenfor kan falsifiseres fra dine DevTools.

Arkitektur

Generatoren er en statisk enkeltsideapplikasjon som betjenes fra Cloudflare Pages: ingen brukerkontoer, ingen autentisering, og ingen backend-kodesti noe sted i genereringsflyten. Alle QR-genererings-, kodnings-, skannings- og renderingsoperasjoner kjører utelukkende i nettleseren din. Ett lite serverløst endepunkt finnes ved siden av og listes her i stedet for å skjules: /api/contact (kontaktskjemaet, som lagrer det du sender inn i Cloudflare D1 og sender det til oss på e-post). Det kalles ikke mens du lager en QR-kode; URL-sikkerhetssjekkeren er et separat produkt på check.qr.abundera.ai. Sjekk om en QR-kode er trygg

Trusselmodell

Fordi generatoren ikke samler inn, lagrer eller overfører brukerdata (de to endepunktene ovenfor håndterer bare det du eksplisitt sender dem), gjelder ikke de vanligste web-app-truslene — tyveri av legitimasjon, databasebrudd, sesjonskapring, server-side-injeksjon — for den. Den gjenværende angrepsflaten er den statiske ressurspakken (HTML, CSS, JavaScript) som betjenes fra vår opprinnelse. Vi designer med forutsetning om:

Content Security Policy — per direktiv

Policyen nedenfor leses fra den utrullede _headers-filen når denne siden bygges, så den kan ikke skli fra det som faktisk sendes fra edgen. Verifiser den i svarheaderne for enhver forespørsel.

Content-Security-Policy:
  default-src 'self';
  script-src 'self' https://abundera.ai 'wasm-unsafe-eval' https://challenges.cloudflare.com;
  worker-src 'self' blob:;
  style-src 'self' 'unsafe-inline' https://abundera.ai;
  font-src 'self';
  img-src 'self' data: blob: https:;
  connect-src 'self' https: https://challenges.cloudflare.com;
  frame-src 'self' https://challenges.cloudflare.com;
  frame-ancestors 'none';
  base-uri 'self';
  form-action 'self'

Hva hvert direktiv lar oss gjøre og hvor det kompromitterer:

Hva CSP ikke kan gjøre

CSP begrenser hvor nettleseren vil laste kode fra. Den kontrollerer ikke hva den lastede koden gjør. Hvis vår opprinnelse ble kompromittert, det første punktet i trusselmodellen, ville angriperens skript kjøre med samme tillatelser som vårt eget, inkludert connect-src- og img-src-tillatelsene ovenfor. Våre forsvar mot det ligger oppstrøms for CSP: distribusjoner går ut gjennom én Cloudflare-konto med avgrensede tokens, ressursfilnavn er innholdshashet slik at en byttet fil endrer hver URL som viser til den, og service workeren cacher bare same-origin GET-svar. Manifestet beskriver nettstedet slik det er levert. Det er ikke en påstand om at ingen nettside noensinne kunne sende data et sted, og vi vil heller at du holder oss til den snevrere, kontrollerbare påstanden.

Ulike CSP-policyer gjelder for /bio/* (lempet img-src for brukerleverte avatarer) og /embed/* (lempet frame-ancestors for intensjonell innebygging). Begge er dokumentert i site/_headers.

Transport + framing-headere

Service worker

Service workeren vår (site/sw.js) cacher bare same-origin-ressurser. Fetch-handleren avviser eksplisitt cross-origin-forespørsler og ikke-GET-metoder — du kan lese logikken i /sw.js (kilden leveres uminifisert nok til å følge med). Cache-skrivinger er pakket inn i event.waitUntil() slik at de ikke kan droppes midt i en navigasjon.

Input-sanitering

Alle renderingsstier som aksepterer brukerinput, behandler det som upålitelig tekst:

Cross-origin bildehenging

Når en bruker limer inn en https:-URL som et vCard-foto eller logo, henter nettleseren det underlagt CORS og vår CSPs img-src-tillatelsesliste. Bildet gjengis til et canvas. Det blir aldri levende DOM, kjører aldri som kode, og når aldri vår opprinnelse — hentingen er nettleser → eksternt bilde, og resultatet males klientsiden. En angriper som kontrollerer en ekstern bilde-URL kan spore at URL-en ble lastet (en loggpost på deres egen server), men kan ikke eksfiltrere noe fra siden vår.

Subresource Integrity (SRI)

All JavaScript og CSS vi leverer er same-origin. Vi laster ikke inn tredjeparts skript eller stilark, så SRI-hasher er ikke relevante. Hvis vi noen gang laster inn en tredjeparts ressurs, legger vi ved en SRI integrity-attributt og dokumenterer hash-oppdateringsprosessen på denne siden.

Rapportere en sårbarhet

Hvis du oppdager et sikkerhetsproblem som påvirker Abundera QR — enten i koden vår, vår distribusjon eller i en avhengighet vi leverer — vennligst rapporter det privat til security@abundera.ai. Vi sikter mot å triagere innen 72 timer. Du kan også nå oss via kontaktdetaljene i vår /.well-known/security.txt-fil.

Ingen bug-bounty (ennå)

Vi tilbyr for øyeblikket ikke betalte bounties, men hver bekreftet gyldig rapport får kredit i endringsloggen og vår offentlige takk.

Verifiser alt ovenfor

Hvert krav på denne siden kan falsifiseres fra nettleserens DevTools uten å stole på oss:

Kontakt

Sikkerhetsrapporter: security@abundera.ai

Sist oppdatert: 2026-09-03. Neste gjennomgang: 2026-12-03.