O Vuky adota medidas tecnicas e organizacionais concretas para proteger dados pessoais contra acessos nao autorizados, destruicao, perda, alteracao ou divulgacao indevida, em conformidade com o Art. 46 da LGPD (Lei 13.709/2018). A seguir descrevemos todos os mecanismos tecnicos ativamente implementados na plataforma:
6.1 Autenticacao e Gestao de Sessao (JWT)
Toda sessao de usuario e controlada por JSON Web Token (JWT) assinado com chave secreta armazenada exclusivamente em variaveis de ambiente no servidor (nunca no codigo-fonte). O token contem:
- Identificador unico do usuario (
pessoa_id) - Tipo de conta (usuario, estabelecimento ou equipe interna)
- Data de expiracao (
exp) — o token e invalidado automaticamente apos o prazo
O frontend injeta o token automaticamente em todas as requisicoes ao backend via interceptador HTTP (authInterceptor). Em caso de token expirado ou invalido, o usuario e desconectado imediatamente e redirecionado para o login. Endpoints publicos (login, cadastro) e o webhook do Mercado Pago nao recebem token.
6.2 Protecao de Senhas (Bcrypt)
Senhas de usuarios nunca sao armazenadas em texto puro. Toda senha e convertida em hash irreversivel usando o algoritmo bcrypt com fator de custo elevado antes de ser gravada no banco de dados. Isso significa que, mesmo em hipotetico vazamento do banco, as senhas originais nao podem ser recuperadas.
6.3 Controle de Acesso por Perfil
Todas as rotas protegidas verificam, alem da autenticidade do token, o perfil de acesso do usuario antes de processar a requisicao. Exemplos:
- Funcionalidades administrativas sao restritas exclusivamente a equipe interna do Vuky — usuarios comuns recebem erro de acesso negado
- Gestao de eventos e restrita a contas de estabelecimentos verificados — nenhum usuario comum pode criar ou editar eventos de terceiros
- Dados de perfil de outro usuario so sao acessiveis a quem esta autenticado e autorizado
6.4 Prevencao de Injecao SQL (Prepared Statements)
Toda interacao com o banco de dados utiliza consultas parametrizadas (Prepared Statements) via driver oficial MySQL2. Valores fornecidos pelo usuario nunca sao concatenados diretamente em queries SQL, eliminando o risco de injecao SQL (OWASP A03).
6.5 Protecao de Headers HTTP (Helmet.js)
O servidor aplica automaticamente cabecalhos HTTP de seguranca via Helmet.js:
- X-Frame-Options: Impede que a plataforma seja embutida em iframes (previne clickjacking)
- X-Content-Type-Options: nosniff: Impede que navegadores interpretem arquivos como tipos diferentes do declarado
- Strict-Transport-Security (HSTS): Forca conexao exclusivamente via HTTPS
- Referrer-Policy: Controla informacoes enviadas ao navegar para outros sites
6.6 Limitacao de Taxa (Rate Limiting)
Para proteger contra ataques de forca bruta e abuso automatizado, a plataforma limita o numero de requisicoes por IP:
- Rotas de autenticacao (login, registro, recuperacao de senha): 20 tentativas por 15 minutos por IP
- Rotas autenticadas gerais: 3.000 requisicoes por 15 minutos
- Catalogo publico: 2.000 requisicoes por 15 minutos
IPs que violam os limites recebem resposta 429 (Too Many Requests) automaticamente.
6.7 CORS — Controle de Origem
A API aceita requisicoes exclusivamente de origens cadastradas em lista branca (whitelist): dominio oficial do Vuky, ambiente de desenvolvimento e o runtime do aplicativo mobile (Capacitor). Qualquer origem nao autorizada e bloqueada automaticamente com erro de CORS, impedindo que sites maliciosos realizem requisicoes em nome do usuario.
6.8 Limite de Payload e Protecao de Upload
O corpo das requisicoes HTTP e limitado a 1 MB para prevenir ataques de negacao de servico (DoS) por sobrecarga. Arquivos de imagem enviados por usuarios passam por validacao de tipo MIME e tamanho (limite de 5 MB por arquivo) antes de serem armazenados no Google Cloud Storage. Os arquivos originais nunca sao salvos no servidor da API.
6.9 Tratamento de Erros Sem Vazamento de Informacao
Em ambiente de producao, o servidor retorna apenas mensagens genericas em caso de erro interno ("Erro interno do servidor"), sem expor detalhes de stacktrace, estrutura de banco de dados, variaveis internas ou mensagens tecnicas. Dados sensiveis como senhas, tokens ou informacoes de pagamento nunca aparecem em logs do servidor.
6.10 Pagamentos — Terceirizacao para Mercado Pago
O Vuky nao armazena dados de cartao de credito, dados bancarios ou informacoes financeiras sensiveis. Todo o processamento de pagamentos e realizado diretamente pelo Mercado Pago, empresa certificada com PCI DSS (Payment Card Industry Data Security Standard). O Vuky recebe apenas a confirmacao do status da transacao e o protocolo do pagamento.
6.11 Verificacao de E-mail no Cadastro
O cadastro de novos usuarios exige verificacao do endereco de e-mail por meio de token enviado por mensagem. Contas nao verificadas tem acesso restrito ate a confirmacao, o que impede a criacao massiva de contas falsas.
6.12 Validacao de Idade (18+)
O formulario de cadastro valida a data de nascimento no frontend e no backend, rejeitando automaticamente usuarios menores de 18 anos, em cumprimento ao Art. 14 da LGPD e a natureza do servico.
Importante: Nenhuma tecnologia oferece seguranca absoluta. Em caso de incidente de seguranca que possa afetar dados pessoais, o Vuky notificara os titulares e a Autoridade Nacional de Protecao de Dados (ANPD) nos termos do Art. 48 da LGPD, dentro do prazo aplicavel.