Kural
Kaldır hata ayıklama ve geçici kod kaldırın .
Kod bu atlayan çıkış çıkış hata ayıklama bilgisini
veya çalıştırmayı çalıştırmayı hata hata ayıklama oldu muhtemelen
bırakılmış geride kazara geliştirme geliştirme sırasında
Desteklenen diller: 45+Giriş
Kodda hata ayıklama, console.log() ifadelere, yorum satırına alınmış mantık yapılarına, sabit kodlanmış test değerlerine veya hata ayıklayıcı Hata durdurma noktaları, çoğu ekibin itiraf ettiğinden daha sık üretim ortamına aktarılır. Bu öğeler, uygulamanın iç durumunu ortaya çıkarır, performans yükü yaratır ve saldırganlara, kod tabanınızın hangi kısımlarının geliştirme aşamasında sorunlu olduğunu gösterir. Sorun giderme amacıyla geçici olarak yazılan kodlar, dağıtımdan önce kaldırılmazsa kalıcı bir güvenlik riski haline gelir.
Neden önemli?
Güvenlikle ilgili hususlar: Üretim ortamındaki hata ayıklama kodları, genellikle üretim günlüklerine ulaşmaması gereken kullanıcı kimlik bilgileri, API anahtarları veya kişisel tanımlayıcı bilgiler (PII) gibi hassas verileri günlüğe kaydeder.
Bir console.log(user) Bu komut, oturum belirteçleri de dahil olmak üzere bir kullanıcı nesnesinin tamamını, destek ekibinin veya günlük toplama araçlarının erişebileceği tarayıcı konsoluna ya da sunucu günlüklerine yazabilir. Bu, otomatik kod inceleme araçlarının tespit ettiği en yaygın kod güvenlik açıklarından biridir.
Performans üzerindeki etkisi: Aşırı konsol günlüğü kaydı, I/O darboğazı yaratır. Yoğun trafiğe sahip bir uç noktadaki günlük kaydı istek yükleri, istek başına yanıt sürelerini 15-30 ms kadar uzatabilir ve günlük depolama maliyetlerini artırabilir. Node.js üretim ortamlarında günlük kaydının performans üzerindeki etkisi, ölçek büyüdükçe hızla artar.
Kodun bakım kolaylığı: Şu şekilde yapılan geçici kod gönderimleri: if (true) return; veya // TODO: fix later iş mantığını atlar ve gelecekteki bakım görevlileri için kafa karışıklığına yol açar. Bunlar, herhangi bir belgeleme izi bulunmayan teknik borç niteliğindedir.
Saldırı yüzeyinin genişlemesi: Hata ayıklama ifadeleri ve ayrıntılı hata günlüğü kayıtları, yığın izlerini, dosya yollarını, bağımlılık sürümlerini ve dahili mantık akışını ortaya çıkarır; bu bilgiler, hedefli saldırılar sırasında keşif amacıyla yararlıdır.
Kod örnekleri
❌ Uygun değil:
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;
}
Bunun neden güvenli olmadığı: Konsol ifadeleri, PII (Kişisel Tanımlanabilir Bilgiler) ve kimlik doğrulama belirteçlerini üretim günlüklerine kaydeder. Yorumlanmış hata ayıklayıcı, yürütme yolları konusunda belirsizlik yaratır. Bu verilerin tümüne, günlük erişimi olan herkes erişebilir ve bu da saldırganlara keşif verileri sağlar.
✅ Uygunluk:
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;
}Bunun neden güvenli olduğu: Yapılandırılmış günlük kaydı, şunun yerine geçer: console.log hassas kullanıcı verilerini ifşa etmeden iş olaylarını kaydeden uygun denetim izleri ile. Hata ayıklama ifadeleri bulunmamaktadır. Mantık, koşullu atlamalar olmaksızın doğrusal bir şekilde ilerler. Denetim günlükleri merkezileştirilmiştir, erişim kontrollüdür ve yalnızca uyumluluk ve hata ayıklama için gerekli bağlamı içerir.
Sonuç
Üretim ortamındaki hata ayıklama kodu önemsiz bir sorun değildir; bu, bir güvenlik açığı, performans sorunu ve bakım yüküdür. Güvenli kod inceleme en iyi uygulamalarına uymak, bu sorunları ana dalınıza ulaşmadan önce tespit etmek anlamına gelir. Otomatik kod kalitesi kuralları, hata ayıklama kodunun sürüm kontrol sistemine, bırakın üretim ortamına ulaşmasını, oraya bile girmesini engellemelidir. Önemli olan, bu sorunları birleştirme işleminden önce tespit edebilecek doğru araçlara sahip olmaktır.

