Sicurezza in Wavor I dati della tua azienda meritano la stessa protezione di una banca. Non ti diciamo solo COSA proteggiamo. Ti mostriamo COME.
AES-256 TLS 1.3 2FA DSGVO/GDPR UK GDPR LGPD (BR) DPDP (IN) Server UE
Crittografia AES-256
I campi sensibili sono memorizzati in modo crittografato. Lettura senza la chiave, non mostrano nulla.
Data Center UE (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.
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.
Architettura della Sicurezza Come fluisce il tuo dato. Dalla richiesta allo storage
PASSO 1
Cloudflare Edge
Protezione DDoS, WAF, TLS 1.3 con fallback a 1.2. Rete anycast globale.
PASSO 2
Cloudflare Tunnel
Origine fisicamente irraggiungibile. Connessione solo in uscita a CF, nessuna porta in ingresso. Fiducia solo personalizzata AOP con certificato Wavor RSA-4096.
PASSO 3
App Node.js
Validazione della sessione, controllo 2FA, RBAC, validazione dell'input tramite schemi Zod.
PASSO 4
PostgreSQL + Vault
Encrypted storage with AES-256. Secrets in HashiCorp Vault.
TLS 1.3 (Fallback 1.2)
HTTPS completo e rigoroso su tutti e 7 i domini.
Protezione DDoS
Protezione Edge prima che il server veda la richiesta.
Dove sono memorizzati i dati?
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.
Come sono protette le chiavi?
Tutte le chiavi API e i segreti in HashiCorp Vault (KV v2, crittografati, controllati per accesso). Avviso di rotazione automatica a 90/180/365 giorni. Nessun segreto in chiaro nel codice, env o log.
Come funziona il 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.
Strati di Difesa Intestazioni di Sicurezza HTTP: 14 direttive rinforzate
CSP Level 3 (21 Direktiven)
Modalità di applicazione. Massimo standard W3C incl. script-src-elem/-attr granulare, Trusted-Types sul sottodominio admin, whitelist manifest/worker/media-src.
HSTS (Strict-Transport-Security)
max-age 1 anno, includeSubDomains, preload abilitato.
X-Frame-Options
NEGA. Nessun clickjacking tramite iframe.
X-Content-Type-Options
nosniff. I browser non possono fraintendere i tipi MIME.
Referrer-Policy
strict-origin-when-cross-origin.
Permissions-Policy
Camera, microfono, geolocalizzazione. Tutti disabilitati per impostazione predefinita.
COOP (Cross-Origin-Opener-Policy)
same-origin. Isola il contesto di navigazione.
CORP (Cross-Origin-Resource-Policy)
same-site. Le risorse non possono essere incorporate cross-origin.
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)
2FA: TOTP / SMS / Email
Tre metodi per il secondo fattore. Codici di backup monouso.
Riconoscimento del Dispositivo
Notifica istantanea su nuovi dispositivi via email con IP + User-Agent.
Gestione delle sessioni
Visualizza sessioni attive, termina singolarmente o disconnetti tutte in una volta.
Protezione contro Brute-Force (3 strati)
5 tentativi falliti per email / 15 minuti di blocco. 10 per IP / 1 ora. 5 email distinte da un IP / divieto di 24 ore.
Cloudflare Turnstile Captcha
Protezione bot senza puzzle di clic. Script caricato con crossOrigin anonimo + no-referrer. Nessuna perdita di sessione verso Cloudflare.
Hashing delle Password Bcrypt (costo 12)
Ogni tentativo costa tempo di calcolo, il che rende gli attacchi a lista inaccessibili. Password >= 12 caratteri, controllo di forza zxcvbn.
Validazione Input Zod
Tutti gli input API sono convalidati lato server tramite Zod. Drizzle-Zod come unica fonte di verità con schema DB.
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.
RBAC a Grana Fina (fail-closed)
Consapevole del Ruolo + metodo HTTP: GET necessita di visualizzazione, POST/PATCH necessitano di modifica, DELETE necessita di eliminazione. Permesso mancante = 403, mai bypassato.
Isolamento Multi-Tenant
Ambito companyId su ogni query DB. Nessuna perdita di dati tra i tenant.
Registri di audit
Ogni mutazione registrata tramite eventLog + AuditLogger. Traccia immutabile con userId, companyId, azione, entità.
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.
Politica di Rotazione dei Segreti
Avviso automatico a 90/180/365 giorni tramite secretRotation.ts.
Mascheramento PII nelle Risposte
Email, IBAN, telefono mascherati per i membri del team senza accesso PII. piiMasking.ts centrale.
Pulizia dei Log
Tutti i log sono centralmente ripuliti. Zero PII nei log, monitoraggio o output di debug.
Chiavi API con ambiti
Permessi granulari con scadenza tramite apiKeyAuth.ts.
Cancellazione morbida e recupero
Recupero di 28 giorni dei dati eliminati. Colonna deletedAt con filtro di query automatico.
Data export
Esportazione JSON completa di tutti i dati utente in una richiesta. Cancellazione tramite flusso DSAR (Art. 17).
Protezione dei Dati Concrete technical measures
Crittografia a Livello di Campo (AES-256-GCM)
IBAN, codice fiscale, sicurezza sociale, dettagli bancari, segreti TOTP 2FA e codici monouso (accesso/verifica/reimpostazione): AES-256-GCM con IV a 96 bit, auth-tag a 128 bit. IV casuale per ogni crittografia.
Crittografia Fail-closed
Senza ENCRYPTION_KEY in produzione: il server rifiuta di avviarsi. Nessun fallback in chiaro (GDPR Art. 32 lit. a).
Rilevamento delle Manomissioni (GCM)
L'autenticazione AES-GCM rileva qualsiasi manomissione del testo cifrato. La decrittazione fallisce in modo deciso. Mai accettare silenziosamente.
Hash di Ricerca HMAC-SHA256
Campi crittografati rimangono ricercabili tramite HMAC deterministico. Chiave separata (Separazione delle Chiavi secondo NIST SP 800-57).
Gestione delle Chiavi Vault
ENCRYPTION_KEY + SESSION_SECRET + tutte le chiavi API in HashiCorp Vault (KV v2). Nessun testo in chiaro nel codice, env o log.
Versionamento delle Chiavi per Rotazione
Formato del testo cifrato v1:iv:data:tag. Ruotabile a nuova versione senza perdita di dati.
Sicurezza della Catena di Fornitura Protezione contro dipendenze compromesse (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.
Avvisi di Dependabot
GitHub Dependabot controlla quotidianamente contro il database CVE. PR di sicurezza automatici.
Lockfile impegnato
package-lock.json nel repo. Impedisce al CI di scaricare versioni diverse da quelle locali.
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.
Patch di sicurezza automatiche
unattended-upgrades installs operating-system security fixes automatically.
Script esterni: CORS + Referrer
Turnstile (Cloudflare) caricato con crossOrigin anonimo + referrerPolicy no-referrer. Nessuna perdita di credenziali.
Monitoraggio e osservabilità Tracciamento degli errori (self-hosted)
Avvisi di errore in tempo reale con stack trace.
Metriche (Prometheus + Grafana)
Latenza delle richieste, query DB, memoria, metriche aziendali personalizzate.
Monitoraggio del server
Uptime, CPU, memoria, disco: controlli automatizzati 24/7.
Sicurezza del caricamento file (stack a 7 livelli) Protezione contro malware, attacchi poliglotti, SVG-XSS, traversata di percorso, MIME-sniffing
Livello 1: Gate di dimensione assoluta (100 MB)
Limite massimo contro zip bombs + DoS. Multer + difesa in profondità.
Livello 2: Gate di dimensione per tipo
Immagini 5 MB, PDF 20 MB, video 100 MB. Limiti specifici per tipo.
Livello 3: Whitelist MIME + Blocklist
22 tipi consentiti. HTML/JS/EXE/SH/JAR esplicitamente bloccati (vettori XSS).
Livello 4: Sanitizzazione dei nomi dei file
Path-traversal (../), null-byte, nomi riservati di Windows bloccati.
Livello 5: Validazione Magic-Byte
Il contenuto del file DEVE corrispondere all'estensione + MIME. La libreria dei tipi di file rileva attacchi 'evil.exe rinominato in picture.jpg'.
Livello 6: Sanitizzazione SVG
DOMPurify rimuove i tag <script> incorporati dagli SVG. Senza sanificazione, il caricamento di SVG è un vettore XSS comune.
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.
Difesa XSS in profondità (4 livelli) XSS memorizzati, riflessi, DOM, supply-chain. Tutti i vettori coperti.
Livello 1: Auto-escape React JSX
Tutti gli input degli utenti sono eseguiti in escape per impostazione predefinita. I tag <script> vengono resi come testo, mai eseguiti. Regola del codice: mai utilizzare dangerouslySetInnerHTML con input utente.
Livello 2: Sanitizzatore DOMPurify
sanitizeProse() + sanitizeEmailPreview() puliscono HTML degli articoli, anteprime email + markdown. Rimuove <script>, <iframe>, on*-handlers, javascript:/data: URIs.
Livello 3: CSP script-src 'self'
Anche se i livelli 1+2 falliscono: il browser blocca gli script esterni. Whitelist solo per Stripe + Turnstile captcha.
Livello 4: Trusted-Types (Admin)
require-trusted-types-for 'script' su admin.wavor.io costringe ogni manipolazione del DOM attraverso una politica. Previene i bug delle librerie che causano DOM-XSS.
Roadmap di certificazione Siamo trasparenti: ci stiamo costruendo e non abbiamo ancora certificazioni formali. Ma stiamo già implementando gli standard e stiamo lavorando attivamente per raggiungerli.
DSGVO / GDPR (EU)
Implementato UK GDPR (Data Protection Act 2018)
Implementato LGPD (Brasilien)
Implementato DPDP Act 2023 (Indien)
Implementato AVG (Niederlande)
Implementato FADP (Schweiz)
Implementato ePrivacy (Cookie-Consent)
Implementato DSA (Digital Services Act)
Implementato
ISO 27001:2022
Pianificato
ISO 27017 + 27018 (Cloud)
Pianificato
ISO 27701 (Privacy)
Pianificato
ISO 42001 (AI Management)
Pianificato
BSI C5 Type II
Pianificato
CSA STAR Level 1
Pianificato Ci allineiamo inoltre con l'Atto sull'IA dell'UE, NIS2 e GoBD (contabilità tedesca). Queste sono normative, non certificazioni.
We only work with vetted, certified providers. Each one has been checked for security and data protection.
Hetzner Online GmbH ISO 27001, data centre in Germany
Cloudflare, Inc. SOC 2, ISO 27001
Stripe Payments Europe Ltd. PCI DSS Level 1
Amazon Web Services, Inc. (AWS) ISO 27001, SOC 2
OVH SAS (OVHcloud) ISO 27001, stored in Germany. Encryption at rest by the provider (AES-256).
Backblaze, Inc. SOC 2. Bucket with Object Lock (compliance mode): once written, a backup cannot be deleted before its retention date.
Twilio, Inc. SOC 2, ISO 27001
Mistral AI SAS SOC 2 Type II, ISO 27001/27701, data in the EU
OpenAI LLC SOC 2 Type II, no training on API inputs
OpenProvider B.V. EU-based (Netherlands)
Segnala problema di sicurezza Hai trovato una vulnerabilità? Segnalala riservatamente al nostro team. Prendiamo ogni segnalazione sul serio e ti risponderemo il prima possibile.
Segnala