Zum Inhalt springen / Skip to content

Saugumas Wavor

Jūsų verslo duomenys nusipelno tokios pačios apsaugos kaip bankas. Mes ne tik sakome, KĄ mes saugome. Mes parodome, KAIP.

AES-256TLS 1.32FADSGVO/GDPRUK GDPRLGPD (BR)DPDP (IN)ES serveriai

Pagrindinis saugumas

AES-256 šifravimas
Jautrūs laukai saugomi šifruoti. Perskaičius be rakto, jie nieko nerodo.
ES duomenų centrai (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.

Veikimo laikas ir infrastruktūra

99.9%
Veikimo laiko tikslas
6h
Atsarginio kopijavimo intervalas
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.

Saugumo architektūra

Kaip jūsų duomenys juda. Nuo užklausos iki saugojimo

ŽINGSNIS 1
Cloudflare Edge
DDoS apsauga, WAF, TLS 1.3 su 1.2 atsarginiu. Globalus anycast tinklas.
ŽINGSNIS 2
Cloudflare Tunnel
Kilmė fiziškai nepasiekiama. Tik išorinė jungtis į CF, jokio įeinančio prievado. AOP tik pagal užsakymą pasitikėjimas su Wavor RSA-4096 sertifikatu.
ŽINGSNIS 3
Node.js programa
Sesijos patvirtinimas, 2FA patikrinimas, RBAC, įvesties patikrinimas per Zod schemas.
ŽINGSNIS 4
PostgreSQL + Vault
Encrypted storage with AES-256. Secrets in HashiCorp Vault.
TLS 1.3 (1.2 atsarginis)
Visiškai griežtas HTTPS visiems 7 domenams.
DDoS apsauga
Edge apsauga prieš serveriui matant užklausą.
Kur saugomi duomenys?
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.
Kaip saugomi raktai?
Visi API raktai ir paslaptys HashiCorp Vault (KV v2, užšifruoti, prieigos kontrolė). Automatinis rotacijos įspėjimas po 90/180/365 dienų. Nėra aiškių paslapčių kode, aplinkoje ar žurnaluose.
Kaip veikia atsarginė kopija?
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.

Gynybos sluoksniai

HTTP saugumo antraštės: 14 sustiprintų direktyvų

CSP Level 3 (21 Direktiven)
Priverstinis režimas. Maksimalus W3C standartas, įskaitant script-src-elem/-attr smulkųjį, Trusted-Types administratoriaus subdomenui, manifest/worker/media-src baltąjį sąrašą.
HSTS (Strict-Transport-Security)
max-age 1 metai, includeSubDomains, preload įjungtas.
X-Frame-Options
ATMETAMA. Nėra clickjacking per iframes.
X-Content-Type-Options
nosniff. Naršyklės negali neteisingai interpretuoti MIME tipų.
Referrer-Policy
strict-origin-when-cross-origin.
Permissions-Policy
Kamera, mikrofonas, geolokacija. Visi išjungti pagal numatytuosius nustatymus.
COOP (Cross-Origin-Opener-Policy)
same-origin. Izoliuoja naršymo kontekstą.
CORP (Cross-Origin-Resource-Policy)
same-site. Ištekliai negali būti įterpti iš kito šaltinio.

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)

Paskyros saugumas

2FA: TOTP / SMS / El. paštas
Trys metodai antrąjam faktoriui. Atsarginiai kodai vienkartiniai.
Įrenginio atpažinimas
Momentinis pranešimas apie naujus įrenginius el. paštu su IP + User-Agent.
Sesijų valdymas
Peržiūrėti aktyvias sesijas, nutraukti individualiai arba atsijungti visas iš karto.
Brute-Force apsauga (3 sluoksniai)
5 nesėkmės per el. paštą / 15 min. užrakinimas. 10 per IP / 1 val. 5 skirtingi el. paštai iš vieno IP / 24 val. uždraudimas.
Cloudflare Turnstile Captcha
Botų apsauga be paspaudimų dėl galvosūkio. Skriptas įkeltas su crossOrigin anonimiškai + no-referrer. Nėra sesijos nutekėjimo į Cloudflare.
Bcrypt slaptažodžių maišymas (kaina 12)
Kiekvienas spėjimas kainuoja skaičiavimo laiką, todėl sąrašų atakos tampa neįperkamos. Slaptažodžiai >= 12 simbolių, zxcvbn stiprumo patikrinimas.
Zod įvesties validacija
Visi API įvesties duomenys patvirtinami serverio pusėje per Zod. Drizzle-Zod kaip vienintelis tiesos šaltinis su 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.

Išplėstiniai valdikliai

Smulkus RBAC (fail-closed)
Rolė + HTTP metodas: GET reikia peržiūros, POST/PATCH reikia redaguoti, DELETE reikia ištrinti. Trūkstama teisė = 403, niekada neaplenkti.
Daugiakartinė izoliacija
companyId-apimtis kiekviename DB užklausoje. Nėra duomenų nutekėjimo tarp nuomininkų.
Audito žurnalai
Kiekviena mutacija užfiksuota per eventLog + AuditLogger. Nepriklausomas pėdsakas su userId, companyId, veiksmas, subjektas.
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.
Paslapčių rotacijos politika
Automatinis įspėjimas po 90/180/365 dienų per secretRotation.ts.
PII maskavimas atsakymuose
El. paštas, IBAN, telefonas maskuoti komandos nariams be PII prieigos. piiMasking.ts centrinis.
Žurnalo valymas
Visi žurnalai centriniu būdu valomi. Nulis PII žurnaluose, stebėjime ar derinimo išvestyje.
API raktai su apimtimis
Smulkios teisės su galiojimo laiku per apiKeyAuth.ts.
Minkštas ištrynimas ir atkūrimas
28 dienų atkūrimas ištrintų duomenų. deletedAt stulpelis su automatinio užklausos filtru.
Data export
Pilnas JSON eksportas visų vartotojo duomenų vienu užklausimu. Ištrynimas per DSAR srautą (Art. 17).

Duomenų apsauga

Concrete technical measures

Lauko lygio šifravimas (AES-256-GCM)
IBAN, mokesčių ID, socialinė apsauga, banko duomenys, TOTP 2FA paslaptys ir vienkartiniai kodai (prisijungimas/patvirtinimas/atkūrimas): AES-256-GCM su 96 bitų IV, 128 bitų auth-tag. Atsitiktinis IV kiekvienam šifravimui.
Fail-closed šifravimas
Be ENCRYPTION_KEY gamyboje: serveris atsisako pradėti. Nėra aiškaus atsarginio (GDPR Art. 32 lit. a).
Pakeitimų aptikimas (GCM)
AES-GCM auth-tag aptinka bet kokį šifruoto teksto klastojimą. Dešifravimas nepavyksta griežtai. Niekada tyliai priimti.
HMAC-SHA256 paieškos maišai
Užšifruoti laukai lieka paieškomi per deterministinį HMAC. Atkirtas raktas (raktų atskyrimas pagal NIST SP 800-57).
Vault raktų valdymas
ENCRYPTION_KEY + SESSION_SECRET + visi API raktai HashiCorp Vault (KV v2). Nėra aiškaus kode, aplinkoje ar žurnaluose.
Raktų versijavimas rotacijai
Šifruoto teksto formatas v1:iv:data:tag. Galima keisti į naują versiją be duomenų praradimo.

Tiekimo grandinės saugumas

Apsauga nuo pažeistų priklausomybių (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 įspėjimai
GitHub Dependabot kasdien tikrina CVE duomenų bazę. Automatiniai saugumo PR.
Užrakto failas įsipareigotas
package-lock.json repozitorijoje. Neleidžia CI traukti skirtingų versijų nei vietinė.
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.
Automatiniai saugumo pataisymai
unattended-upgrades installs operating-system security fixes automatically.
Išoriniai scenarijai: CORS + Refereris
Turnstile (Cloudflare) įkeltas su crossOrigin anonimiškai + referrerPolicy no-referrer. Nėra kredencialų nutekėjimo.

Stebėjimas ir matomumas

Klaidų sekimas (savo serveriu)
Klaidų įspėjimai realiuoju laiku su steko pėdsakais.
Metrikos (Prometheus + Grafana)
Užklausos delsimas, DB užklausos, atmintis, individualūs verslo metrikai.
Serverio stebėjimas
Veikimo laikas, CPU, atmintis, diskas: 24/7 automatizuoti patikrinimai.

Failų įkėlimo saugumas (7 sluoksnių struktūra)

Apsauga nuo kenkėjiškų programų, poliglotų atakų, SVG-XSS, kelio perėjimo, MIME-sniffing

Sluoksnis 1: Absoliutus dydžio vartai (100 MB)
Griežtas apribojimas prieš zip bombas + DoS. Multer + gynyba gylio.
Sluoksnis 2: Pagal tipą dydžio vartai
Vaizdai 5 MB, PDF 20 MB, vaizdo įrašas 100 MB. Tipui specifiniai apribojimai.
Sluoksnis 3: MIME baltasis sąrašas + juodasis sąrašas
Leidžiami 22 tipai. HTML/JS/EXE/SH/JAR aiškiai užblokuoti (XSS vektoriai).
Sluoksnis 4: Failo pavadinimo sanitarizacija
Kelio perėjimas (../), nulinis baitas, Windows rezervuoti pavadinimai užblokuoti.
Sluoksnis 5: Magiško baito validacija
Failo turinys PRIVALO atitikti plėtinį + MIME. Failo tipo biblioteka aptinka 'evil.exe pervadintą į picture.jpg' atakas.
Sluoksnis 6: SVG sanitarizacija
DOMPurify pašalina įterptus <script> žymeles iš SVG. Be sanitarijos, SVG įkėlimas yra įprastas XSS vektorius.
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 gynyba gylio (4 sluoksniai)

Saugojimo, atspindėto, DOM, tiekimo grandinės XSS. Visi vektoriai padengti.

Sluoksnis 1: React JSX automatinis pabėgimas
Visi vartotojo įvedimai automatiškai pabėgti. <script> žymės pateikiamos kaip tekstas, niekada nevykdomos. Kodo taisyklė: niekada dangerouslySetInnerHTML su vartotojo įvedimu.
Sluoksnis 2: DOMPurify sanitarizatorius
sanitizeProse() + sanitizeEmailPreview() valo straipsnio-HTML, el. pašto peržiūras + markdown. Pašalina <script>, <iframe>, on*-tvarkykles, javascript:/data: URI.
Sluoksnis 3: CSP script-src 'self'
Net jei 1+2 sluoksniai nepavyksta: naršyklė blokuoja svetimus skriptus. Baltoji sąrašas tik Stripe + Turnstile captcha.
Sluoksnis 4: Patikimi tipai (Administracija)
require-trusted-types-for 'script' admin.wavor.io priverčia kiekvieną DOM manipuliaciją per politiką. Neleidžia bibliotekų klaidoms sukelti DOM-XSS.

Sertifikavimo kelias

Mes esame skaidrūs: mes kuriame ir dar neturime oficialių sertifikatų. Bet mes jau įgyvendiname standartus ir aktyviai dirbame link jų.

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

Mes papildomai derinamės su ES AI aktu, NIS2 ir GoBD (Vokietijos buhalterija). Tai yra reglamentai, o ne sertifikatai.

Pranešti apie saugumo problemą

Radote pažeidžiamumą? Praneškite apie tai konfidencialiai mūsų komandai. Mes rimtai vertiname kiekvieną pranešimą ir kuo greičiau su jumis susisieksime.