Regra
Remova código de depuração e temporário antes dos commits.
Código que ignora a lógica, gera informações de depuração,
ou interrompe a execução para depuração provavelmente foi
deixado acidentalmente durante o desenvolvimento.
Linguagens suportadas: 45+Introdução
Código de depuração, console.log() declarações, lógica comentada, valores de teste hardcoded ou debugger breakpoints, são enviados para produção com mais frequência do que a maioria das equipes admite. Esses artefatos expõem o estado interno da aplicação, criam sobrecarga de desempenho e sinalizam aos atacantes quais partes do seu código-base foram problemáticas durante o desenvolvimento. O que começa como código temporário para solução de problemas torna-se um risco de segurança permanente se não for removido antes da implantação.
Por que isso importa
Implicações de segurança: Código de depuração em produção frequentemente registra dados sensíveis como credenciais de usuário, chaves de API ou PII que não deveriam chegar aos logs de produção.
A console.log(user) declaração pode despejar um objeto de usuário inteiro, incluindo tokens de sessão, no console do navegador ou em logs de servidor acessíveis à equipe de suporte ou ferramentas de agregação de logs. Esta é uma das vulnerabilidades de segurança de código mais comuns que as ferramentas automatizadas de revisão de código detectam.
Impacto no desempenho: O log excessivo no console cria um gargalo de I/O. Um endpoint de alto tráfego que registra payloads de requisição pode degradar os tempos de resposta em 15-30ms por requisição e inflar os custos de armazenamento de logs. O impacto no desempenho do logging em ambientes de produção Node.js se agrava rapidamente em escala.
Manutenibilidade do código: Commits de código temporários como if (true) return; ou
// TODO: fix later contornam a lógica de negócios e criam confusão para futuros mantenedores. Eles representam dívida técnica sem trilha de documentação.
Expansão da superfície de ataque: Declarações de depurador e log de erros verboso revelam stack traces, caminhos de arquivo, versões de dependência e fluxo lógico interno, informações úteis para reconhecimento durante ataques direcionados.
Exemplos de código
❌ Não-conforme:
async function processPayment(userId, amount) {
console.log('Processing payment:', { userId, amount });
const user = await db.users.findById(userId);
console.log('User data:', user); // Logs email, tokens, everything
debugger;
const result = await paymentGateway.charge({
userId: user.id,
amount: amount
});
console.log('Gateway response:', result);
return result;
}
Por que isso é inseguro: Declarações de console registram PII (Informações de Identificação Pessoal) e tokens de autenticação em logs de produção. O depurador comentado cria ambiguidade sobre os caminhos de execução. Todos esses dados são acessíveis a qualquer pessoa com acesso aos logs e fornecem aos atacantes dados de reconhecimento.
✅ Compatível:
async function processPayment(userId, amount) {
const user = await db.users.findById(userId);
if (!user) {
throw new PaymentError('User not found');
}
const result = await paymentGateway.charge({
userId: user.id,
amount: amount
});
await auditLog.record({
event: 'PAYMENT_PROCESSED',
userId: userId,
transactionId: result.transactionId
});
return result;
}Por que isso é seguro: Logging estruturado substitui console.log com trilhas de auditoria adequadas que capturam eventos de negócio sem expor dados sensíveis do usuário. Não existem instruções de depuração. A lógica flui linearmente sem desvios condicionais. Os logs de auditoria são centralizados, com controle de acesso, e contêm apenas o contexto necessário para conformidade e depuração.
Conclusão
Depurar código em produção não é um problema menor; é uma vulnerabilidade de segurança, um passivo de desempenho e um fardo de manutenção. Seguir as melhores práticas de revisão de código seguro significa identificar esses problemas antes que cheguem à sua branch principal. Regras automatizadas de qualidade de código devem impedir que o código de depuração chegue ao controle de versão, muito menos à produção. A chave é ter as ferramentas certas para identificar esses problemas antes que sejam mesclados.
.avif)
