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-256 TLS 1.3 2FA DSGVO/GDPR UK GDPR LGPD (BR) DPDP (IN) Servidores da UE
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 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)
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.
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.
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
ISO 27017 + 27018 (Cloud)
Planejado
ISO 27701 (Privacy)
Planejado
ISO 42001 (AI Management)
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.
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)
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.
Relatar