Terug naar home

Versleuteling & beveiliging

Biedradar beschermt je gegevens met meerdere lagen beveiliging.

Onze beveiligingsfilosofie

We hanteren defense-in-depth: meerdere beveiligingslagen die elkaar opvangen als een laag faalt. Het principe van minste privilege is leidend — services krijgen alleen de toegang die ze strikt nodig hebben. Waar mogelijk passen we zero-trust toe: geen enkel verzoek wordt vertrouwd zonder verificatie, ongeacht herkomst.

  • Defense-in-depth: meerdere onafhankelijke beveiligingslagen
  • Least privilege: minimale rechten voor elk proces en elke API-sleutel
  • Fail-closed: bij twijfel wordt toegang geweigerd, niet toegestaan

TLS 1.3 voor transport

Het verkeer tussen je browser en onze servers loopt over TLS 1.3, de modernste versie van het Transport Layer Security-protocol. TLS 1.3 ondersteunt alleen sterke, geauthenticeerde encryptie-modi (AEAD) en verwijdert kwetsbare cipher suites uit oudere versies. De cipher suites die we toelaten:

  • TLS_AES_128_GCM_SHA256
  • TLS_AES_256_GCM_SHA384
  • TLS_CHACHA20_POLY1305_SHA256

Versleuteling tijdens transport

Alle verbindingen tussen jouw browser en onze servers verlopen via TLS 1.3 (Transport Layer Security). Dit betekent dat je adres, listingprijs en analyseresultaten versleuteld worden verstuurd en niet onderschept kunnen worden door derden.

Perfect Forward Secrecy

TLS 1.3 vereist (EC)DHE-sleuteluitwisseling, wat Perfect Forward Secrecy garandeert. Dit betekent dat sessiesleutels per verbinding uniek zijn en niet afgeleid worden uit het langetermijn-certificaat. Zelfs als een privé-sleutel later gecompromitteerd raakt, blijven eerder vastgelegde sessies onleesbaar.

Certificaten van Let's Encrypt

Onze TLS-certificaten worden automatisch uitgegeven en geroteerd door Let's Encrypt, een non-profit certificate authority. Rotatie gebeurt elke ~60 dagen via het ACME-protocol, zodat sleutels regelmatig vernieuwd worden. Alle uitgegeven certificaten verschijnen in publieke Certificate Transparency (CT) logs en zijn extern verifieerbaar.

HSTS (HTTP Strict Transport Security)

Onze servers sturen een Strict-Transport-Security header die browsers verplicht uitsluitend HTTPS te gebruiken voor Biedradar.nl. Dit voorkomt SSL-stripping-aanvallen en accidentele HTTP-verzoeken. Opname in de HSTS preload-list is gepland zodra de domeinconfiguratie volledig stabiel is.

Oudere TLS-versies uitgeschakeld

TLS 1.0 en 1.1 zijn volledig uitgeschakeld op onze servers — ze zijn officieel deprecated door de IETF (RFC 8996). TLS 1.2 staat alleen aan als minimale fallback met uitsluitend sterke cipher suites (AEAD met PFS). SSLv2 en SSLv3 zijn nooit ondersteund.

Encryptie in rust

Onze persistente opslag draait op infrastructuurniveau-versleuteling met AES-256 bij een EU-hostingprovider. Wachtwoorden worden gehasht met bcrypt en nooit in plain text bewaard. Op de blockdevice-laag is alle data versleuteld, waardoor extra applicatie-encryptie geen meerwaarde toevoegt.

SQLite WAL-mode integriteit

Onze database draait in Write-Ahead Logging (WAL) mode. Dit garandeert atomaire transacties: een schrijfactie slaagt volledig of helemaal niet. Bij een onverwachte crash blijven de databasebestanden consistent — geen partial writes, geen corruptie. Lezers en schrijvers blokkeren elkaar bovendien niet.

Back-ups

Onze hostingprovider voert reguliere back-ups uit van onze applicatie- en databasevolumes binnen de EER. Back-up-volumes zijn versleuteld in rust (AES-256) en blijven binnen EU-jurisdictie. Herstel-procedures worden periodiek getest.

API-sleutel beheer

Alle externe API-sleutels (Kadaster, EP-Online, Google Places, e.a.) staan uitsluitend in server-side environment variables (.env). Deze bestanden zijn niet ingecheckt in git en niet bereikbaar vanuit de browser. Bij verdacht gedrag of vermoeden van lekkage worden sleutels direct geroteerd.

  • Sleutels in .env, niet in source control
  • Toegang beperkt tot het server-proces
  • Rotatie-procedure bij elk vermoeden van compromittering

Geen client-side secrets

Onze Vite-build emitteert geen .env-variabelen in de frontend bundle. De gecompileerde JavaScript bevat geen API-sleutels, database-credentials of andere geheimen. Alle gevoelige aanroepen lopen via onze eigen backend, die als proxy fungeert.

Cookies — beveiligingsvlaggen

Biedradar zet alleen een functionele cookie (bw_locale) om je taalvoorkeur te onthouden. Deze wordt geserveerd met de Secure-vlag (alleen via HTTPS) en SameSite=Lax (beperkt cross-site verzending). Er zijn geen authenticatie-, tracking- of advertentiecookies, omdat er geen accounts en geen tracking is.

CORS-beleid

Onze API accepteert uitsluitend cross-origin verzoeken vanaf onze eigen frontend-origin. Wildcard CORS (Access-Control-Allow-Origin: *) is nadrukkelijk niet toegestaan. Pre-flight OPTIONS-requests worden strikt gevalideerd voordat een werkelijk verzoek wordt verwerkt.

Content-Security-Policy

We sturen een basis Content-Security-Policy header mee die inline scripts en externe origins inperkt. Een volledig strikte CSP met nonces voor alle scripts en stijlen staat op de roadmap. We zijn daar transparant over: onze CSP is nog niet zo strak als bij grote enterprise-platformen.

Subresource Integrity (SRI)

Biedradar laadt geen JavaScript-bibliotheken vanaf externe CDN's. Alle code zit in onze eigen, lokaal gehoste Vite-bundle. Hierdoor is SRI niet nodig en is er geen aanvalsoppervlak via gecompromitteerde derde-partij-CDN's.

Rate limiting

We gebruiken een sliding-window rate limiter op basis van Upstash Redis binnen de EU. Per IP-adres wordt een maximum aan verzoeken per tijdsperiode afgedwongen. Dit beschermt tegen denial-of-service, brute force op endpoints en geautomatiseerde scraping van onze API.

Inloggen en wachtwoorden

Biedradar heeft geen gebruikersaccounts en dus geen wachtwoorden. Er is geen inlog-database, geen password reset-flow en geen sessietoken. Mocht in een toekomstige fase een account-systeem komen, dan plannen we Argon2id voor wachtwoord-hashing met passende memory- en time-parameters.

API-authenticatie naar derden

Onze server authentiseert zich bij externe diensten via header-gebaseerde sleutels:

  • Kadaster (PDOK / Koopsom): X-Api-Key header
  • Google Places: X-Goog-Api-Key header
  • EP-Online (RVO): Bearer-token in Authorization header
  • Alle aanroepen uitsluitend over HTTPS, met certificaatvalidatie

Beveiligingsheaders

  • Strict-Transport-Security (HSTS) — browser forceert HTTPS
  • Content-Security-Policy — beschermt tegen XSS en code-injectie
  • X-Content-Type-Options — voorkomt MIME-type sniffing
  • X-Frame-Options — beschermt tegen clickjacking

Logging

Onze logs blijven minimaal: status codes, latency, en geanonimiseerde foutsporen. We loggen geen request bodies, geen volledige adressen en geen identificeerbare gebruikersgegevens. Logs worden binnen de EER opgeslagen met een korte bewaartermijn.

Beveiligingsupdates

We draaien wekelijks npm audit en monitoren GitHub Dependabot-meldingen voor kwetsbare dependencies. Kritieke patches worden zo snel mogelijk toegepast. We gebruiken uitsluitend Node.js LTS-versies die actief beveiligingsondersteuning ontvangen.

Vulnerability disclosure

Ontdek je een beveiligingsprobleem? Meld het via een GitHub Security Advisory op onze repository, of mail rechtstreeks naar de eigenaar. We reageren binnen 72 uur en werken samen aan gecoördineerde disclosure. Vermijd publieke meldingen voordat een fix beschikbaar is.

Penetration testing

Op dit moment is er geen formele externe pentest uitgevoerd — we zitten nog in een vroege fase. Daar zijn we transparant over. Een onafhankelijke security-audit staat gepland zodra het platform commercieel volwassen is en betalende klanten heeft.

Incidentrespons

Bij een beveiligingsincident hanteren we de workflow: identificeren, isoleren, herstellen, communiceren. De repository-eigenaar is het primaire aanspreekpunt en streeft een eerste reactie binnen 72 uur na. Status-updates worden, indien relevant, gepubliceerd via GitHub-issues op onze repository.

DNS-beveiliging

Ons domein wordt beheerd via een Nederlandse registrar. DNSSEC is in voorbereiding voor activatie zodra alle DNS-records gestabiliseerd zijn. Dit beschermt tegen DNS-spoofing en man-in-the-middle aanvallen op naamresolutie.

E-mailbeveiliging (DKIM/SPF/DMARC)

Biedradar verstuurt op dit moment geen transactionele of marketing-e-mails. Zodra dat in de toekomst wel gebeurt, configureren we SPF, DKIM en DMARC met een policy van 'reject' om spoofing van ons domein te voorkomen.

Hardware Security Modules (HSM)

We gebruiken op dit moment geen HSM voor key-management — de schaal en het profiel van Biedradar vereisen dat (nog) niet. TLS-sleutels worden beschermd door file-system permissions en disk-encryptie van de host. HSM-gebaseerde key-storage is een mogelijkheid voor latere groeifasen.

Infrastructuur

Onze infrastructuur draait bij een EU-gevestigde hostingprovider die werkt met versleutelde opslag (AES-256), 24/7 fysieke beveiliging, redundante stroomvoorziening en branddetectie op datacenterniveau.

Compliance frameworks

We werken in lijn met meerdere relevante kaders:

  • AVG/GDPR (Verordening 2016/679) voor privacy en gegevensverwerking
  • Versleuteling at-rest (AES-256) en TLS 1.2+ in transit als baseline
  • Best-effort mitigatie van OWASP Top 10 risico's in onze applicatie
  • Nederlandse uAVG voor sectorspecifieke privacy-regels

API-beveiliging

Externe API-aanroepen naar Kadaster, CBS en andere bronnen verlopen uitsluitend via HTTPS. API-sleutels worden server-side opgeslagen en zijn nooit zichtbaar voor de client.

Versleuteling in rust

Persistente opslag is versleuteld in rust met AES-256 op infrastructuurniveau (industriestandaard, geleverd door onze EU-hostingprovider). De database waarin gecachte resultaten staan, profiteert van deze laag zonder dat aparte applicatie-encryptie nodig is.

Wijzigingen in dit beleid

Beveiligingsstandaarden evolueren. Wij actualiseren dit beleid wanneer onze infrastructuur, dependencies of dreigingsbeeld wijzigen. Wijzigingen worden gepubliceerd op deze pagina, met de datum van laatste update.

TLS 1.3
In transit
AES-256
At rest
HSTS
Forced HTTPS
bcrypt
Passwords

Cookies

Biedradar gebruikt alleen functionele cookies (zoals je taalvoorkeur). We plaatsen geen tracking- of advertentiecookies. Je data blijft in Nederland.