blog
Ferramentas IA

Como garantir que o código gerado por IA é seguro

IAs cometem erros de segurança. Saiba o que verificar antes de deployar.

hidden: true

Código gerado por IA: é seguro?

IAs são ótimas para gerar código rápido. Mas cometem erros de segurança que podem custar caro. Aqui está o que verificar.

Os erros mais comuns

1. Secrets hardcoded

A IA frequentemente coloca chaves de API diretamente no código:

// ❌ A IA fez isso
const supabase = createClient(
  "https://xxxx.supabase.co",
  "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
);
 
// ✅ Corrija para
const supabase = createClient(
  process.env.NEXT_PUBLIC_SUPABASE_URL!,
  process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!,
);

2. Sem validação de input

// ❌ A IA esqueceu de validar
export async function POST(req: Request) {
  const data = await req.json();
  await db.user.create({ data });
}
 
// ✅ Adicione Zod
const schema = z.object({
  name: z.string().min(2),
  email: z.string().email(),
});
 
export async function POST(req: Request) {
  const result = schema.safeParse(await req.json());
  if (!result.success) return Response.json({ error: "Inválido" }, { status: 400 });
  await db.user.create({ data: result.data });
}

3. Sem autenticação nas rotas

// ❌ API aberta para qualquer um
export async function DELETE(req, { params }) {
  await db.user.delete({ where: { id: params.id } });
}
 
// ✅ Verificar auth
export async function DELETE(req, { params }) {
  const session = await getServerSession();
  if (!session) return Response.json({ error: "Não autorizado" }, { status: 401 });
  await db.user.delete({ where: { id: params.id } });
}

4. SQL injection em queries manuais

A IA pode gerar queries vulneráveis:

// ❌ Vulnerável
const query = `SELECT * FROM users WHERE name = '${name}'`;
 
// ✅ Parameterized
const query = `SELECT * FROM users WHERE name = $1`;

5. CORS aberto

// ❌ Aceita qualquer origem
app.use(cors());
 
// ✅ Especifique origens
app.use(cors({ origin: "https://meuapp.com" }));

Checklist antes de deployar

  • Nenhum secret hardcoded
  • Inputs validados com Zod
  • Rotas protegidas com autenticação
  • CORS configurado corretamente
  • .env no .gitignore
  • Sem dangerouslySetInnerHTML com dados de usuário

Como pedir código seguro para a IA

Inclua segurança no prompt:

Crie uma API route para criar usuários. Use Zod para validação,
verifique autenticação, trate erros com try/catch, e nunca exponha
dados sensíveis na resposta.