O Cursor, o Lovable, o Bolt e o ChatGPT põem uma app no ar numa tarde. As mesmas cinco falhas aparecem vezes sem conta. Para cada uma tens aqui como a verificar tu mesmo, sem ferramentas pagas.
Falha 1
Variáveis com o prefixo NEXT_PUBLIC_, VITE_ ou REACT_APP_ são copiadas para o JavaScript que qualquer visitante descarrega. Se a chave da OpenAI ou a sk_live da Stripe tiver esse prefixo, está pública.
Verifica: abre a tua app, carrega em F12, vai a Sources e procura (Ctrl+Shift+F) por sk-, sk_live e secret. Se encontrares alguma, revoga-a já e passa a chamada para o servidor.
Falha 2
A chave anon do Supabase pode ser pública, mas só se o Row Level Security estiver ligado em todas as tabelas. Sem RLS, qualquer pessoa lê e apaga os dados de todos os utilizadores com essa chave.
Verifica: no painel do Supabase, em Authentication → Policies, todas as tabelas devem dizer "RLS enabled" e ter pelo menos uma política. No Firebase, procura por allow read, write: if true nas regras.
Falha 3
A IA esconde o botão "Admin" a quem não é administrador, mas a rota /api/admin continua a responder a qualquer pedido. Esconder no ecrã não é proteger.
Verifica: termina a sessão e abre diretamente os endereços das tuas rotas de API no browser ou com curl. Se alguma devolver dados, falta a verificação do lado do servidor.
Falha 4
É comum o código gerado usar jwt.decode() em vez de jwt.verify(), ou assinar com um segredo como "secret". Assim, qualquer pessoa fabrica um token com "role": "admin".
Verifica: procura no código por decode( junto de tokens e pelo valor de JWT_SECRET. Deve ter pelo menos 32 caracteres aleatórios e nunca estar no repositório.
Falha 5
Access-Control-Allow-Origin: * numa API com sessão, e nenhum limite de pedidos no login ou nas rotas que chamam a IA. Um robô pode testar milhares de passwords, ou gastar o teu saldo da OpenAI numa noite.
Verifica: no F12, em Network, abre um pedido à tua API e lê os cabeçalhos da resposta. Depois tenta o login errado 20 vezes seguidas: se nunca fores travado, não há limite.
Queres que eu verifique por ti?
Verifico chaves expostas, SQL injection, XSS, TLS, JWT e dependências. Recebes um relatório com a correção de cada problema em 3 dias úteis. Se o trabalho não for possível, devolvo o valor.