Beveiliging

Ons beveiligingsmodel in één zin: er is niets op een server om aan te vallen. Alles hieronder is verifieerbaar vanuit je DevTools.

Architectuur

Abundera QR is een statische single-page applicatie geserveerd vanuit Cloudflare Pages. Er is geen applicatieserver, geen database, geen gebruikersaccounts, geen authenticatie, geen API-eindpunten en geen backend-codepad dat gebruikersdata verwerkt. Elke QR-generatie, -codering, -scan en -renderingoperatie wordt volledig in je browser uitgevoerd.

Dreigingsmodel

Omdat we geen gebruikersdata verzamelen, opslaan of verzenden, zijn de meest voorkomende webapp-bedreigingen, diefstal van inloggegevens, databaseinbreuk, sessie-hijacking, server-side injectie, niet van toepassing. Het resterende aanvalsoppervlak is de statische asset-bundel (HTML, CSS, JavaScript) die vanuit onze origin wordt geserveerd. We ontwerpen met de aanname:

Content Security Policy, per directive

Het huidige beleid (verifieer in Response-headers voor elk verzoek):

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'

Wat elke directive ons toestaat en waar het compromissen biedt:

Verschillende CSP-beleidsregels zijn van toepassing op /bio/* (versoepelde img-src voor door gebruikers opgegeven avatars) en /embed/* (versoepelde frame-ancestors voor opzettelijk insluiten). Beide zijn gedocumenteerd in site/_headers.

Transport- en framing-headers

Service worker

Onze service worker (site/sw.js) slaat alleen same-origin-assets in de cache op. De fetch-handler weigert expliciet cross-origin-verzoeken en niet-GET-methoden, je kunt de logica lezen op GitHub. Cache-schrijfbewerkingen zijn gewikkeld in event.waitUntil() zodat ze niet halverwege een navigatie kunnen worden verwijderd.

Invoersanitisatie

Elk renderingpad dat gebruikersinvoer accepteert, behandelt dit als niet-vertrouwde tekst:

Cross-origin afbeeldingen ophalen

Wanneer een gebruiker een https:-URL plakt als vCard-foto of logo, haalt de browser deze op via CORS en de img-src-allowlist van onze CSP. De afbeelding wordt in een canvas gerenderd. Het wordt nooit live DOM, wordt nooit uitgevoerd als code en bereikt nooit onze origin, de fetch is browser → externe afbeelding en het resultaat wordt client-side geschilderd. Een aanvaller die een externe afbeeldings-URL beheert, kan bijhouden dat de URL is geladen (een logregel op hun eigen server), maar kan niets van onze pagina exfiltreren.

Subresource Integrity (SRI)

Alle JavaScript en CSS die we leveren is same-origin. We laden geen scripts of stylesheets van derden, dus SRI-hashes zijn niet van toepassing. Als we ooit een asset van een derde partij laden, zullen we een SRI integrity-attribuut eraan toevoegen en het hash-updateproces op deze pagina documenteren.

Een kwetsbaarheid melden

Als je een beveiligingsprobleem ontdekt dat Abundera QR treft, of het nu in onze code, onze implementatie of in een afhankelijkheid die we leveren zit, meld het dan privé aan security@abundera.ai. We streven ernaar binnen 72 uur te triageren. Je kunt ons ook bereiken via de contactgegevens in ons /.well-known/security.txt-bestand.

Nog geen bugbounty

We bieden momenteel geen betaalde bounties aan, maar elk bevestigd geldig rapport ontvangt erkenning in de changelog en onze publieke dankbaarheid.

Verifieer het bovenstaande

Elke bewering op deze pagina is verifieerbaar vanuit de DevTools van je browser zonder ons te vertrouwen:

Contact

Beveiligingsmededelingen: security@abundera.ai

Laatst bijgewerkt: 2026-04-19. Volgende beoordeling: 2026-07-19.