Zum Inhalt springen / Skip to content

Segurança na Wavor

Os dados da sua empresa merecem a mesma proteção que um banco. Nós não apenas dizemos O QUE protegemos. Nós mostramos COMO.

AES-256TLS 1.32FADSGVO/GDPRUK GDPRLGPD (BR)DPDP (IN)Servidores da UE

Segurança Central

Criptografia AES-256
Sensitive fields are stored encrypted. Read without the key, they show nothing.
Data Centers da 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.

Tempo de Atividade & Infraestrutura

99.9%
Meta de Uptime
6h
Intervalo de Backup
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.

Arquitetura de Segurança

Como seus dados fluem. Da solicitação ao armazenamento

PASSO 1
Cloudflare Edge
Proteção DDoS, WAF, TLS 1.3 com fallback para 1.2. Rede anycast global.
PASSO 2
Cloudflare Tunnel
Origem fisicamente inacessível. Conexão apenas de saída para CF, sem porta de entrada. Confiança personalizada AOP apenas com certificado Wavor RSA-4096.
PASSO 3
Aplicativo Node.js
Validação de sessão, verificação 2FA, RBAC, validação de entrada via esquemas Zod.
PASSO 4
PostgreSQL + Vault
Encrypted storage with AES-256. Secrets in HashiCorp Vault.
TLS 1.3 (Fallback 1.2)
HTTPS Estrito Total em todos os 7 domínios.
Proteção DDoS
Proteção na borda antes que o servidor veja a solicitação.
Onde os dados são armazenados?
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.
Como as chaves são protegidas?
Todas as chaves de API e segredos no HashiCorp Vault (KV v2, criptografado, controlado por acesso). Aviso de rotação automática em 90/180/365 dias. Sem segredos em texto simples no código, env ou logs.
Como funciona o 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.

Camadas de Defesa

Cabeçalhos de Segurança HTTP: 14 diretrizes endurecidas

CSP Level 3 (21 Direktiven)
Modo de aplicação. Padrão máximo W3C, incluindo script-src-elem/-attr granular, Trusted-Types no subdomínio de administração, whitelist de manifest/worker/media-src.
HSTS (Strict-Transport-Security)
max-age 1 year, includeSubDomains, preload enabled.
X-Frame-Options
NEGAR. Sem clickjacking via iframes.
X-Content-Type-Options
nosniff. Os navegadores não podem interpretar incorretamente os tipos MIME.
Referrer-Policy
strict-origin-when-cross-origin.
Permissions-Policy
Câmera, microfone, geolocalização. Todos desativados por padrão.
COOP (Cross-Origin-Opener-Policy)
mesma-origem. Isola o contexto de navegação.
CORP (Cross-Origin-Resource-Policy)
mesmo-site. Recursos não podem ser incorporados de origem cruzada.

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)

Segurança da Conta

2FA: TOTP / SMS / Email
Três métodos para o segundo fator. Códigos de backup de uso único.
Reconhecimento de Dispositivo
Notificação instantânea em novos dispositivos via email com IP + User-Agent.
Gerenciamento de Sessão
Visualizar sessões ativas, encerrar individualmente ou sair de todas de uma vez.
Proteção contra Força Bruta (3 camadas)
5 falhas por email / bloqueio de 15min. 10 por IP / 1h. 5 emails distintos de um IP / banimento de 24h.
Cloudflare Turnstile Captcha
Proteção contra bots sem quebra-cabeça de clique. Script carregado com crossOrigin anônimo + no-referrer. Sem vazamento de sessão para Cloudflare.
Hashing de Senha Bcrypt (custo 12)
Every guess costs computing time, which makes list attacks unaffordable. Passwords >= 12 chars, zxcvbn strength check.
Validação de Entrada Zod
Toda entrada de API validada no lado do servidor via Zod. Drizzle-Zod como fonte única de verdade com esquema de 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.

Controles Avançados

RBAC Granular (fail-closed)
Cuidado com o papel + método HTTP: GET precisa de visualização, POST/PATCH precisam de edição, DELETE precisa de exclusão. Permissão ausente = 403, nunca contornar.
Isolamento Multi-Tenant
escopo companyId em cada consulta de DB. Sem vazamento de dados entre inquilinos.
Logs de Auditoria
Toda mutação registrada via eventLog + AuditLogger. Rastro imutável com userId, companyId, ação, entidade.
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.
Política de Rotação de Segredos
Aviso automático em 90/180/365 dias via secretRotation.ts.
Mascaramento de PII nas Respostas
Email, IBAN, telefone mascarados para membros da equipe sem acesso a PII. piiMasking.ts central.
Limpeza de Logs
Todos os logs são centralmente limpos. Zero PII nos logs, monitoramento ou saída de depuração.
Chaves de API com Escopos
Permissões granulares com expiração via apiKeyAuth.ts.
Soft-Delete & Recuperação
Recuperação de dados excluídos em 28 dias. coluna deletedAt com filtro de consulta automático.
Data export
Exportação JSON completa de todos os dados do usuário em uma solicitação. Exclusão via fluxo DSAR (Art. 17).

Proteção de Dados

Concrete technical measures

Criptografia em Nível de Campo (AES-256-GCM)
IBAN, ID fiscal, segurança social, detalhes bancários, segredos de 2FA TOTP e códigos de uso único (login/verificação/reset): AES-256-GCM com IV de 96 bits, tag de autenticação de 128 bits. IV aleatório por criptografia.
Criptografia Fail-closed
Sem ENCRYPTION_KEY em produção: o servidor se recusa a iniciar. Sem fallback em texto simples (GDPR Art. 32 lit. a).
Detecção de Manipulação (GCM)
Tag de autenticação AES-GCM detecta qualquer adulteração de texto cifrado. A descriptografia falha severamente. Nunca aceita silenciosamente.
Hashes de Pesquisa HMAC-SHA256
Campos criptografados permanecem pesquisáveis via HMAC determinístico. Chave separada (Separação de Chaves por NIST SP 800-57).
Gerenciamento de Chaves do Vault
ENCRYPTION_KEY + SESSION_SECRET + todas as chaves de API no HashiCorp Vault (KV v2). Sem texto simples no código, env ou logs.
Versionamento de Chaves para Rotação
Formato de texto cifrado v1:iv:data:tag. Rotacionável para nova versão sem perda de dados.

Segurança da Cadeia de Suprimentos

Proteção contra dependências comprometidas (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.
Alertas do Dependabot
GitHub Dependabot verifica diariamente contra o banco de dados CVE. PRs de segurança automáticos.
Arquivo de bloqueio comprometido
package-lock.json no repositório. Impede que o CI puxe versões diferentes das locais.
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.
Patches de Segurança Automáticos
unattended-upgrades installs operating-system security fixes automatically.
Scripts Externos: CORS + Referenciador
Turnstile (Cloudflare) carregado com crossOrigin anônimo + referrerPolicy no-referrer. Sem vazamento de credenciais.

Monitoramento & Observabilidade

Rastreamento de Erros (auto-hospedado)
Alertas de erro em tempo real com rastreamentos de pilha.
Métricas (Prometheus + Grafana)
Latência de solicitação, consultas de DB, memória, métricas de negócios personalizadas.
Monitoramento de Servidor
Tempo de atividade, CPU, memória, disco: verificações automatizadas 24/7.

Segurança de Upload de Arquivo (Pilha de 7 Camadas)

Proteção contra malware, ataques poliglotas, SVG-XSS, travessia de caminho, MIME-sniffing

Camada 1: Limite de Tamanho Absoluto (100 MB)
Limite rígido contra bombas zip + DoS. Multer + defesa em profundidade.
Camada 2: Limite de Tamanho por Tipo
Imagens 5 MB, PDF 20 MB, vídeo 100 MB. Limites específicos por tipo.
Camada 3: Lista Branca + Lista Negra de MIME
22 tipos permitidos. HTML/JS/EXE/SH/JAR explicitamente bloqueados (vetores XSS).
Camada 4: Sanitização de Nome de Arquivo
Traversal de caminho (../), byte nulo, nomes reservados do Windows bloqueados.
Camada 5: Validação de Magic-Byte
O conteúdo do arquivo DEVE corresponder à extensão + MIME. Biblioteca de tipos de arquivo detecta ataques 'evil.exe renomeado para picture.jpg'.
Camada 6: Sanitização de SVG
DOMPurify remove tags <script> incorporadas de SVGs. Sem sanitização, o upload de SVG é um vetor XSS comum.
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.

Defesa XSS em Profundidade (4 Camadas)

XSS armazenado, refletido, DOM, cadeia de suprimentos. Todos os vetores cobertos.

Camada 1: Escape Automático de React JSX
Todas as entradas do usuário são escapadas por padrão. <script> tags renderizadas como texto, nunca executadas. Regra de código: nunca dangerouslySetInnerHTML com entrada do usuário.
Camada 2: Sanitizador DOMPurify
sanitizeProse() + sanitizeEmailPreview() limpam HTML de artigo, pré-visualizações de email + markdown. Remove <script>, <iframe>, manipuladores on* e URIs javascript:/data:.
Camada 3: CSP script-src 'self'
Mesmo se as camadas 1+2 falharem: o navegador bloqueia scripts estrangeiros. Lista branca apenas para Stripe + captcha Turnstile.
Camada 4: Trusted-Types (Admin)
require-trusted-types-for 'script' em admin.wavor.io força toda manipulação DOM através de uma política. Impede que bugs de biblioteca causem DOM-XSS.

Roteiro de Certificação

Somos transparentes: Estamos em construção e ainda não temos certificações formais. Mas já implementamos os padrões e estamos trabalhando ativamente para alcançá-los.

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

Além disso, alinhamos com a Lei de IA da UE, NIS2 e GoBD (contabilidade alemã). Estas são regulamentações, não certificações.

Relatar Problema de Segurança

Encontrou uma vulnerabilidade? Relate-a confidencialmente à nossa equipe. Levamos cada relatório a sério e retornaremos o mais rápido possível.