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
-
.envno.gitignore - Sem
dangerouslySetInnerHTMLcom 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.