Por que a IA erra sempre nos mesmos lugares
A IA de programação aprendeu com uma quantidade enorme de código público. Boa parte desse código foi escrita para tutorial, para demonstração, para "rodar rápido no meu computador". Código de tutorial quase nunca tem segurança de verdade, porque segurança atrapalha o exemplo. Resultado: o modelo aprendeu que o jeito normal de escrever é o jeito simples, não o jeito protegido.
Some a isso o segundo fator: você pediu o que queria ver funcionando. Pediu tela de login, cadastro de cliente, área do administrador. Não pediu proteção contra invasão, porque proteção não é uma tela. A IA entrega o que foi pedido e não avisa o que faltou. Ela não é desonesta, ela é literal.
O terceiro fator é o mais perigoso: erro de segurança não dá erro. Se faltar um ponto e vírgula, a tela quebra e você percebe na hora. Se faltar verificação de login em uma página, tudo continua abrindo normalmente, só que abre para qualquer pessoa. Você só descobre quando alguém já entrou.
As cinco falhas que mais aparecem
1. Chave de acesso escrita dentro do código
Chave de acesso (ou API key) é a senha que seu sistema usa para falar com outros serviços: gateway de pagamento, envio de e-mail, serviço de IA, armazenamento de arquivos. A IA costuma colar essa chave direto no meio do arquivo, porque assim funciona de primeira.
O problema é duplo. Primeiro: se o código foi para um repositório público, a chave está visível para o mundo, e existem robôs que varrem repositórios públicos justamente atrás disso. Segundo: dependendo de onde a chave foi colocada, ela é enviada para o navegador do visitante, o que significa que qualquer pessoa pode vê-la com um clique em "inspecionar".
Uma chave de serviço de IA ou de nuvem vazada não é só constrangimento, é conta. Existem relatos frequentes de faturas que estouraram porque terceiros passaram a usar a chave alheia. O valor varia muito, mas a lógica é sempre a mesma: quem tem a chave gasta no seu nome.
2. Consulta ao banco de dados montada por texto
Aqui vale explicar o jargão. Toda vez que seu sistema busca algo no banco de dados, ele escreve uma pergunta interna do tipo "me traga o cliente cujo e-mail é tal". Se o sistema monta essa pergunta simplesmente colando o que o visitante digitou no formulário, o visitante pode digitar algo que não é um e-mail, e sim um comando. Isso se chama SQL injection, e é uma das falhas mais antigas e mais exploradas que existem.
O jeito correto é usar consulta com parâmetro: o sistema separa a pergunta do dado, e o banco trata o que veio do formulário sempre como texto, nunca como comando. As IAs modernas acertam isso com boa frequência, mas escorregam quando o pedido envolve busca com muitos filtros, ordenação dinâmica ou relatório configurável. É justamente nas telas mais complexas que o erro aparece.
3. Endereço de dados sem exigir login
Endpoint é o endereço interno que seu sistema chama para buscar ou salvar dados. Sua tela de "lista de clientes" é bonita e exige login. Mas o endereço que alimenta essa tela com os dados, algo como /api/clientes, muitas vezes fica desprotegido: qualquer pessoa que descobrir esse endereço recebe a lista inteira sem nunca passar pela tela de login.
Esse é, de longe, o furo mais comum em sistema gerado por IA. A IA protegeu a tela porque você viu a tela. Ninguém pensou no endereço por trás dela.
4. Verificação que só existe no navegador
Muita validação que a IA escreve acontece no navegador do usuário: campo obrigatório, valor mínimo, formato de CPF, perfil de administrador. Tudo isso pode ser burlado, porque o navegador é o computador do outro, e ali quem manda é ele. Se a mesma verificação não existir também no servidor, ela não vale nada. O caso clássico é o preço: se o valor do pedido chega ao servidor vindo do navegador em vez de ser recalculado, alguém pode comprar por um real.
5. Upload de arquivo sem filtro
Sistema que aceita foto de perfil, comprovante ou anexo precisa checar o tipo real do arquivo, limitar o tamanho e guardar em uma pasta que não execute nada. A IA costuma entregar o upload funcionando e sem nenhuma dessas três travas. É um caminho conhecido para alguém enviar um arquivo que roda dentro do seu servidor.
Roteiro de verificação antes de publicar
Você não precisa saber programar para rodar boa parte desta checagem. Precisa de paciência e de acesso ao projeto.
| Passo | O que fazer | Sinal de problema |
|---|---|---|
| 1. Caçar chaves | Busque no projeto por palavras como key, secret, token, password, api_key | Um valor longo escrito direto no arquivo, fora do arquivo de configuração de ambiente |
| 2. Testar sem login | Abra o sistema em janela anônima e tente acessar direto uma URL interna (/admin, /api/clientes) | Qualquer coisa que devolva dado em vez de barrar |
| 3. Testar formulário sujo | Digite aspas, sinal de igual e trechos com tags nos campos | Erro cru do banco aparecendo na tela, ou o texto sendo interpretado como código |
| 4. Conferir preço e permissão | Verifique se valores e perfil de usuário são recalculados no servidor | Preço ou nível de acesso vindo do formulário sem conferência |
| 5. Conferir o repositório | Veja se o projeto está privado e se o arquivo de variáveis de ambiente está fora do versionamento | Repositório público com credenciais no histórico |
| 6. Conferir dependências | Rode a verificação de vulnerabilidades do gerenciador de pacotes do projeto | Alertas classificados como alto ou crítico |
| 7. Conferir backup | Confirme que existe backup automático do banco e que ele já foi restaurado ao menos uma vez | Backup que nunca foi testado é backup que não existe |
Um truque que funciona: peça a auditoria à própria IA
Abra o projeto na mesma ferramenta que gerou o código e peça algo assim: "revise este projeto procurando credenciais expostas, rotas sem autenticação, consultas ao banco sem parâmetro e validação que só existe no navegador. Liste arquivo, linha e como corrigir."