Säkerhet

Vår säkerhetsmodell i en mening: det finns ingenting på en server att attackera. Allt nedan kan falsifieras från dina DevTools.

Arkitektur

Generatorn är en statisk single-page-applikation som serveras från Cloudflare Pages: inga användarkonton, ingen autentisering och ingen backend-kodväg någonstans i genereringsflödet. Alla QR-generings-, kodnings-, skannings- och renderingsoperationer körs helt i din webbläsare. En liten serverlös endpoint finns vid sidan om och listas här snarare än döljs: /api/contact (kontaktformuläret, som lagrar det du skickar in i Cloudflare D1 och mejlar det till oss). Den anropas inte medan du skapar en QR-kod; URL-säkerhetskontrollen är en separat produkt på check.qr.abundera.ai. Kontrollera om en QR-kod är säker

Hotmodell

Eftersom generatorn varken samlar in, lagrar eller överför användardata (de två endpointarna ovan hanterar bara det du uttryckligen skickar till dem) gäller inte de vanligaste webbapp-hoten — lösenordsstöld, databasintrång, sessionskapning, serverinjektion, för den. Den återstående attackytan är det statiska tillgångspaketet (HTML, CSS, JavaScript) som serveras från vår origin. Vi utformar med antagandet:

Content Security Policy — per direktiv

Policyn nedan läses från den driftsatta _headers-filen när den här sidan byggs, så den kan inte glida isär från det kanten faktiskt skickar. Verifiera den i svarshuvudena för valfri begäran.

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'

Vad varje direktiv tillåter oss att göra och var det kompromissar:

Vad CSP inte kan göra

CSP begränsar varifrån webbläsaren laddar kod. Den granskar inte vad den laddade koden faktiskt gör. Om vår origin blev komprometterad, det första fallet i hotmodellen, skulle angriparens skript köras med samma behörigheter som vårt, inklusive tillåtelserna för connect-src och img-src ovan. Våra försvar mot det ligger uppströms om CSP: driftsättningar går ut via ett enda Cloudflare-konto med avgränsade tokens, tillgångsfilnamn är innehållshashade så att en utbytt fil ändrar varje URL som refererar till den, och service workern cachar bara same-origin GET-svar. Manifestet beskriver webbplatsen som den levereras. Det är inte ett påstående om att ingen webbsida någonsin skulle kunna skicka data någonstans, och vi vill hellre att du håller oss till det snävare, kontrollerbara påståendet.

Olika CSP-policyer gäller för /bio/* (avslappnad img-src för användarangivna avatarer) och /embed/* (avslappnad frame-ancestors för avsiktlig inbäddning). Båda dokumenteras i site/_headers.

Transport- och inramningshuvuden

Service worker

Vår service worker (site/sw.js) cachar endast same-origin-tillgångar. Fetch-hanteraren avvisar uttryckligen cross-origin-begäranden och icke-GET-metoder — du kan läsa logiken i /sw.js (källan levereras tillräckligt ominifierad för att följa med). Cache-skrivningar är inlindade i event.waitUntil() så de kan inte tappas mitt under navigering.

Inmatningssanering

Varje renderingsväg som accepterar användarinmatning behandlar den som ej betrodd text:

Cross-origin bildinhämtning

När en användare klistrar in en https:-URL som vCard-foto eller logotyp hämtar webbläsaren den med hänsyn till CORS och vår CSP:s img-src-tillåtelselista. Bilden renderas till en canvas. Den blir aldrig live DOM, körs aldrig som kod och når aldrig vår origin — hämtningen är webbläsare → fjärrbild, och resultatet målas klientsidan. En angripare som kontrollerar en fjärrbild-URL kan spåra att URL:en laddades (en loggpost på deras egen server) men kan inte exfiltrera något från vår sida.

Subresource Integrity (SRI)

All JavaScript och CSS vi levererar är same-origin. Vi laddar inte tredjepartsskript eller stilmallar, så SRI-hashar är inte tillämpliga. Om vi någonsin laddar en tredjepartstillgång levererar vi ett SRI integrity-attribut på den och dokumenterar hash-uppdateringsprocessen på den här sidan.

Rapportera en sårbarhet

Om du upptäcker ett säkerhetsproblem som påverkar Abundera QR — vare sig det gäller vår kod, vår deployment eller ett beroende vi levererar — vänligen rapportera det privat till security@abundera.ai. Vi strävar efter att triagera inom 72 timmar. Du kan också nå oss via kontaktuppgifterna i vår /.well-known/security.txt-fil.

Ingen bug bounty (ännu)

Vi erbjuder för närvarande inte betalda bounties, men varje bekräftad giltig rapport får erkännande i ändringsloggen och vårt offentliga tack.

Verifiera vad som helst ovan

Varje påstående på den här sidan kan falsifieras från din webbläsares DevTools utan att lita på oss:

Kontakt

Säkerhetsupplysningar: security@abundera.ai

Senast uppdaterad: 2026-09-03. Nästa granskning: 2026-12-03.