Zum Inhalt springen / Skip to content

Säkerhet på Wavor

Dina affärsdata förtjänar samma skydd som en bank. Vi säger inte bara VAD vi skyddar. Vi visar dig HUR.

AES-256TLS 1.32FADSGVO/GDPRUK GDPRLGPD (BR)DPDP (IN)EU-servrar

Kärnsäkerhet

AES-256-kryptering
Känsliga fält lagras krypterade. Läs utan nyckeln, de visar ingenting.
EU-datacenter (Hetzner DE)
Servers and customer files in Germany. Offsite backups sit encrypted outside the EU under the EU's transfer safeguards; the privacy policy names the provider.

Uppetid & Infrastruktur

99.9%
Uppetidsmål
6h
Backupintervall
90d
Longest retention
Nerd zone

It gets technical from here. You do not need to read any of it to use Wavor safely - it is here so it can be checked.

Säkerhetsarkitektur

Hur dina data flödar. Från begäran till lagring

STEG 1
Cloudflare Edge
DDoS-skydd, WAF, TLS 1.3 med 1.2 fallback. Globalt anycast-nätverk.
STEG 2
Cloudflare Tunnel
Ursprung fysiskt otillgängligt. Utgående endast anslutning till CF, ingen inkommande port. AOP Anpassad endast förtroende med Wavor RSA-4096 cert.
STEG 3
Node.js-app
Sessionsvalidering, 2FA-kontroll, RBAC, indata validering via Zod-scheman.
STEG 4
PostgreSQL + Vault
Encrypted storage with AES-256. Secrets in HashiCorp Vault.
TLS 1.3 (1.2 fallback)
Full strikt HTTPS på alla 7 domäner.
DDoS-skydd
Edge-skydd innan servern ser begäran.
Var lagras data?
The servers are at Hetzner in Germany (Falkenstein and Nuremberg), customer files in object storage in Germany. The data centres are guarded around the clock, with biometric access. Backups and some services such as email, SMS and AI run through providers outside the EU. Those transfers are secured under the EU's rules, and the privacy policy names every provider.
Hur skyddas nycklar?
Alla API-nycklar och hemligheter i HashiCorp Vault (KV v2, krypterat, åtkomstkontrollerat). Automatisk rotationsvarning vid 90/180/365 dagar. Inga klartexthemligheter i kod, miljö eller loggar.
Hur fungerar backup?
Automated PostgreSQL backups every 6 hours. Kept: every one for two days, one a day up to 14 days, one a week up to 90 days. Each is decrypted again and checked after encryption, and every night the newest is restored as a test. Offsite copy at Backblaze, encrypted with our own key before it leaves the server.

Försvarslager

HTTP-säkerhetsrubriker: 14 härdade direktiv

CSP Level 3 (21 Direktiven)
Tvinga läge. Maximalt W3C-standard inkl. script-src-elem/-attr granular, Trusted-Types på admin-subdomän, manifest/worker/media-src vitlista.
HSTS (Strict-Transport-Security)
max-age 1 år, includeSubDomains, preload aktiverat.
X-Frame-Options
NEJ. Ingen clickjacking via iframes.
X-Content-Type-Options
nosniff. Webbläsare kan inte misstolka MIME-typer.
Referrer-Policy
strict-origin-when-cross-origin.
Permissions-Policy
Kamera, mikrofon, geolokalisering. Alla inaktiverade som standard.
COOP (Cross-Origin-Opener-Policy)
same-origin. Isolerar webbläsarkontext.
CORP (Cross-Origin-Resource-Policy)
same-site. Resurser kan inte bäddas in över domäner.

Independently verifiable: Mozilla's HTTP Observatory grades the headers of wavor.io A+. A test asks Mozilla for the result again every night. https://developer.mozilla.org/en-US/observatory/analyze?host=wavor.io(developer.mozilla.org)

Kontosäkerhet

2FA: TOTP / SMS / E-post
Tre metoder för den andra faktorn. Backupkoder engångsbruk.
Enhetsigenkänning
Omedelbar avisering om nya enheter via e-post med IP + User-Agent.
Sessionshantering
Visa aktiva sessioner, avsluta individuellt eller logga ut alla på en gång.
Brute-Force-skydd (3 lager)
5 misslyckanden per e-post / 15 minuters låsning. 10 per IP / 1 timme. 5 distinkta e-postadresser från en IP / 24 timmars avstängning.
Cloudflare Turnstile Captcha
Bot-skydd utan klickpussel. Skript laddat med crossOrigin anonym + no-referrer. Ingen sessionsläcka till Cloudflare.
Bcrypt lösenordshashning (kostnad 12)
Varje gissning kostar datorkraft, vilket gör lista-attacker oöverkomliga. Lösenord >= 12 tecken, zxcvbn styrkekontroll.
Zod inmatningsvalidering
All API-inmatning valideras server-sidan via Zod. Drizzle-Zod som en enda sanningskälla med DB-schema.
Rate limiting with a sliding window
A sliding window rather than fixed blocks, so a limit is not handed out afresh at the top of every minute. The counter currently lives in the individual worker process; once Redis is configured, all processes share one.

Avancerade kontroller

Finjusterad RBAC (fail-closed)
Roll + HTTP-metod medveten: GET behöver visa, POST/PATCH behöver redigera, DELETE behöver ta bort. Saknad behörighet = 403, aldrig kringgå.
Multi-Tenant-isolering
companyId-scope på varje DB-fråga. Ingen dataläckage mellan hyresgäster.
Granskningsloggar
Varje mutation loggas via eventLog + AuditLogger. Oföränderlig spår med userId, companyId, åtgärd, enhet.
Approval by two people
Four actions need two approvals: changes to legal values, prices and terms, and a new sub-processor. While only one person is authorised, that person decides alone. The rule takes effect once there is a second.
Hemlighetsrotationspolicy
Automatisk varning vid 90/180/365 dagar via secretRotation.ts.
PII-maskering i svar
E-post, IBAN, telefon maskerade för teammedlemmar utan PII-åtkomst. piiMasking.ts central.
Loggskrubbling
Alla loggar rensas centralt. Noll PII i loggar, övervakning eller debug-utdata.
API-nycklar med scopes
Granulära behörigheter med utgång via apiKeyAuth.ts.
Mjuk borttagning & återställning
28-dagars återställning av raderade data. deletedAt-kolumn med automatisk frågefilter.
Data export
Full JSON-export av alla användardata i en begäran. Borttagning via DSAR-flöde (Art. 17).

Dataskydd

Concrete technical measures

Fält-nivå kryptering (AES-256-GCM)
IBAN, skatte-ID, socialförsäkring, bankuppgifter, TOTP 2FA-hemligheter och engångskoder (inloggning/verifiering/återställning): AES-256-GCM med 96-bit IV, 128-bit auth-tag. Slumptal IV per kryptering.
Fail-closed kryptering
Utan ENCRYPTION_KEY i produktion: servern vägrar att starta. Ingen klartext fallback (GDPR Art. 32 lit. a).
Manipuleringsdetektering (GCM)
AES-GCM auth-tag upptäcker all kryptotextmanipulation. Dekryptering misslyckas hårt. Aldrig tyst accept.
HMAC-SHA256 sökhashar
Krypterade fält förblir sökbara via deterministisk HMAC. Separat nyckel (Nyckelseparation per NIST SP 800-57).
Vault nyckelhantering
ENCRYPTION_KEY + SESSION_SECRET + alla API-nycklar i HashiCorp Vault (KV v2). Ingen klartext i kod, miljö eller loggar.
Nyckelversionering för rotation
Kryptotextformat v1:iv:data:tag. Rotationsbart till ny version utan dataloss.

Leveranskedjans säkerhet

Skydd mot komprometterade beroenden (event-stream 2018, ua-parser-js 2021)

Dependencies as a build gate
Every build checks all dependencies against the vulnerability database. New findings block; known ones sit in a dated baseline that may only shrink.
Dependabot-varningar
GitHub Dependabot kontrollerar dagligen mot CVE-databas. Automatiska säkerhets-PRs.
Lockfile åtagit
package-lock.json i repo. Förhindrar CI från att dra olika versioner än lokala.
SSRF protection on outbound fetches
Every address that comes from user input is checked before Wavor fetches it. Private networks are blocked, and each redirect is checked again instead of being followed blindly.
Automatiska säkerhetsuppdateringar
unattended-upgrades installs operating-system security fixes automatically.
Externa skript: CORS + Referrer
Turnstile (Cloudflare) laddad med crossOrigin anonym + referrerPolicy no-referrer. Ingen credential-läckage.

Övervakning & Observabilitet

Felspårning (egenhostad)
Felmeddelanden i realtid med stackspår.
Metrik (Prometheus + Grafana)
Begärningslatens, DB-frågor, minne, anpassade affärsmått.
Serverövervakning
Uppetid, CPU, minne, disk: 24/7 automatiserade kontroller.

Filuppladdningssäkerhet (7-lagers stack)

Skydd mot skadlig programvara, polyglot-attacker, SVG-XSS, path-traversal, MIME-sniffing

Lager 1: Absolut storleksgräns (100 MB)
Hård gräns mot zip-bomber + DoS. Multer + försvar på djupet.
Lager 2: Per-typ storleksgräns
Bilder 5 MB, PDF 20 MB, video 100 MB. Typ-specifika begränsningar.
Lager 3: MIME vitlista + svartlista
22 typer tillåtna. HTML/JS/EXE/SH/JAR uttryckligen blockerade (XSS-vektorer).
Lager 4: Filnamnssanering
Sökvägsgenomgång (../), null-byte, Windows-reserverade namn blockerade.
Lager 5: Magic-Byte validering
Filinnehåll MÅSTE matcha filändelse + MIME. Filtypbibliotek upptäcker 'evil.exe omdöpt till picture.jpg' attacker.
Lager 6: SVG sanering
DOMPurify tar bort inbäddade <script>-taggar från SVG:er. Utan sanering är SVG-uppladdning en vanlig XSS-vektor.
Layer 7: virus scan
Server-side virus scan before storage, provided the scanner is running on the server. If it is missing, that is logged rather than passed over silently.

XSS Försvar på djupet (4 lager)

Lagrade, reflekterade, DOM, leveranskedja XSS. Alla vektorer täckta

Lager 1: React JSX Auto-Escape
Alla användarinmatningar undantas som standard. <script> taggar renderas som text, aldrig exekverade. Kodregel: aldrig dangerouslySetInnerHTML med användarinmatning.
Lager 2: DOMPurify sanerare
sanitizeProse() + sanitizeEmailPreview() rengör artikel-HTML, e-postförhandsvisningar + markdown. Tar bort <script>, <iframe>, on*-handlers, javascript:/data: URIs.
Lager 3: CSP script-src 'self'
Även om lager 1+2 misslyckas: webbläsaren blockerar utländska skript. Vitlista endast för Stripe + Turnstile captcha.
Lager 4: Trusted-Types (Admin)
require-trusted-types-for 'script' på admin.wavor.io tvingar varje DOM-manipulation genom en policy. Förhindrar bibliotekfel från att orsaka DOM-XSS.

Certifieringsplan

Vi är transparenta: Vi bygger upp och har ännu inga formella certifieringar. Men vi implementerar redan standarderna och arbetar aktivt mot dem.

DSGVO / GDPR (EU)
Genomförd
UK GDPR (Data Protection Act 2018)
Genomförd
LGPD (Brasilien)
Genomförd
DPDP Act 2023 (Indien)
Genomförd
AVG (Niederlande)
Genomförd
FADP (Schweiz)
Genomförd
ePrivacy (Cookie-Consent)
Genomförd
DSA (Digital Services Act)
Genomförd
SOC 2 Type II
Planerad
ISO 27001:2022
Planerad
ISO 27017 + 27018 (Cloud)
Planerad
ISO 27701 (Privacy)
Planerad
ISO 42001 (AI Management)
Planerad
BSI C5 Type II
Planerad
CSA STAR Level 1
Planerad

Vi anpassar oss dessutom till EU:s AI-lag, NIS2 och GoBD (tysk bokföring). Dessa är regleringar, inte certifieringar.

Rapportera säkerhetsproblem

Hittade en sårbarhet? Rapportera den konfidentiellt till vårt team. Vi tar varje rapport på allvar och kommer att återkomma till dig så snabbt som möjligt.