Pré-voo de segurança e LGPD (beta)
Verificação antes de publicar um app feito com IA (Codex, Lovable, Cursor), pensada para quem não é desenvolvedor: semáforo, explicação em português, artigo da LGPD por achado, prompt de correção para o Codex e rascunho de ROPA. Roda fora do VS Code, como CLI ou como plugin do Codex.
Beta fechada: o pré-voo não faz parte da extensão publicada no Marketplace. O plugin e a CLI são distribuídos pelo repositório, que por enquanto é privado; os comandos abaixo exigem acesso a ele.
Verificação automática e limitada. Não é auditoria nem atestado de conformidade com a LGPD.
Como rodar
Plugin do Codex
O repositório é um marketplace de plugins do Codex (.agents/plugins/marketplace.json).
codex plugin marketplace add AllanSantos-DV/security-check # ou o caminho local do repositório
codex plugin add security-check-preflight@security-checkDepois, no Codex: "faça o pré-voo de segurança e LGPD antes de eu publicar". A skill preflight-seguranca-lgpd roda a verificação, explica o resultado e oferece correções. O Codex só explica e prioriza; quem decide o que é problema é a ferramenta, sempre com evidência (arquivo e linha, ou a requisição HTTP).
CLI
node plugins/security-check-preflight/skills/preflight-seguranca-lgpd/scripts/preflight.cjs <pasta-do-app> --json resultado.json| Opção | Efeito |
|---|---|
--saida <arquivo.md> | relatório em markdown (padrão preflight-relatorio.md) |
--json <arquivo.json> | resultado completo, usado pela skill do Codex |
--testar-supabase | teste ao vivo com a URL e a chave anon do .env do app |
--supabase-url, --supabase-anon-key | teste ao vivo com credenciais explícitas |
Código de saída: 0 = sem bloqueios, 2 = corrigir antes de publicar, 1 = erro na execução.
O que verifica
| Verificação | Como | Nível |
|---|---|---|
| Tabela do Supabase legível por qualquer pessoa | teste ao vivo: lê 1 linha com a chave anon (só GET, nada é guardado) | corrigir |
| Tabela do Supabase sem RLS | migrações SQL (create table sem enable row level security) | corrigir |
| Regras do Firebase abertas (inclui o "modo de teste") | firestore.rules, storage.rules, database.rules.json | corrigir |
| Chave secreta no navegador | variável NEXT_PUBLIC_/VITE_/REACT_APP_... com SECRET, SERVICE_ROLE, OPENAI...; JWT service_role fora do .env de servidor | corrigir |
| Chave de provedor no código | AWS, GitHub, Stripe, Google, Slack, SendGrid, PEM, string de conexão | corrigir |
.env fora do .gitignore | .gitignore do projeto | corrigir |
| Rota que altera dados sem login | rotas Next.js (app e pages), Express, Flask e FastAPI sem verificação de sessão | corrigir |
| Debug ligado | Flask app.run(debug=True), Django DEBUG = True | corrigir |
| Biblioteca com falha alta ou crítica | npm audit | corrigir |
Política RLS using (true), source maps em produção, CORS *, eval/innerHTML | código e configuração | revisar |
| Dados sensíveis (Art. 11), dado pessoal em log, no navegador ou escrito no código, falta de aviso de privacidade | LGPDScanner + colunas das migrações | revisar |
O que não puder ser verificado (sem package-lock.json, dependências Python, Supabase fora do ar) aparece em "Verificações que não puderam ser feitas", e o semáforo nunca fica verde nesse caso.