Sikkerhet

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

Arkitektur

Abundera QR er en statisk enkeltsideapplikasjon som betjenes fra Cloudflare Pages. Det finnes ingen applikasjonsserver, ingen database, ingen brukerkontoer, ingen autentisering, ingen API-endepunkter og ingen backend-kodesti som behandler brukerdata. Alle QR-genererings-, kodnings-, skannings- og renderingsoperasjoner kjører utelukkende i nettleseren din.

Trusselmodell

Fordi vi ikke samler inn, lagrer eller overfører brukerdata, gjelder ikke de vanligste web-app-truslene — tyveri av legitimasjon, databasebrudd, sesjonskapring, server-side-injeksjon. 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

Gjeldende policy (verifiser i svarheadere for enhver forespørsel):

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

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

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 på GitHub. 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-04-19. Neste gjennomgang: 2026-07-19.