Segurança

Como protegemos a plataforma e garantimos que o teu voto é verdadeiramente anónimo — do teu browser até à base de dados.

Autenticação segura

O acesso à plataforma requer verificação de e-mail. Cada sessão é validada por um JSON Web Token (JWT) verificado do lado do servidor — nunca confiamos apenas em cookies de sessão não validados.

Anonimato arquitectural

A tabela de votos contém apenas o UUID do utilizador, o identificador da pergunta e a opção escolhida. O e-mail não existe nesta tabela. Ninguém — incluindo a equipa do Palco Democrático — consegue fazer a ligação entre um voto e uma identidade.

Row Level Security (RLS)

Todas as tabelas têm políticas de segurança ao nível da linha ativas na base de dados. Um utilizador autenticado só consegue ler os seus próprios dados. Os resultados das votações são expostos apenas como totais agregados — nunca como registos individuais de outros utilizadores.

Um voto por pessoa

A restrição UNIQUE(profile_id, poll_id) é aplicada directamente na base de dados. Mesmo que a lógica aplicacional seja contornada, é impossível registar dois votos do mesmo utilizador na mesma pergunta.

Validação server-side

Todas as mutações (votar, registar, autenticar) passam por Server Actions executadas no servidor. A identidade do utilizador é sempre verificada no servidor antes de qualquer escrita na base de dados.

Transporte cifrado

Toda a comunicação entre o teu browser e os nossos servidores é feita sobre HTTPS com TLS. Os dados nunca viajam em texto simples.

Arquitectura de anonimato — em detalhe

O princípio central é a separação de identidade e opinião. Os dados estão organizados em quatro tabelas:

profiles → id (UUID), criado_em

polls   → id, título, abre_em, fecha_em

options  → id, poll_id, texto, posição

votes   → profile_id (UUID), poll_id, option_id

A tabela votes nunca contém e-mail, nome ou qualquer dado que identifique diretamente uma pessoa. O profile_id é um UUID opaco — sem um join à tabela auth.users (bloqueado por RLS), é impossível saber a quem pertence.

Fornecedores de infraestrutura

  • Supabase — base de dados PostgreSQL, autenticação e realtime. SOC 2 Type II. Dados alojados na União Europeia (região eu-central-1).
  • Vercel — alojamento da aplicação web. SOC 2 Type II. Edge network com HTTPS automático.

Reportar uma vulnerabilidade

Se descobrires uma vulnerabilidade de segurança, agradecemos que nos contactes de forma responsável antes de tornares o problema público. Envia um e-mail para seguranca@palcodemocratico.pt com uma descrição detalhada. Comprometemo-nos a responder em 48 horas.