Logging Failures (Günlük Kaydı Hataları)
Genel Bakış
Bu güvenlik açığı, güvenlik olaylarının yetersiz şekilde kaydedilmesi ve izlenmesinden kaynaklanır. Yani, güvenlik ihlallerinin tespit edilememesi ve müdahale edilememesi durumunda ortaya çıkar.
Yaygın Örnekler
1. Insufficient Logging (Eksik Günlük Kaydı)
Örnek: Önemli güvenlik olaylarının kaydedilmemesi.
// Kötü örnek
function login(username, password) {
if (validateCredentials(username, password)) {
return true;
}
return false;
}
// İyi örnek
class SecurityLogger {
async logLogin(username, success) {
await this.log({
event: 'login',
username,
success,
timestamp: new Date(),
ip: this.getClientIP(),
userAgent: this.getUserAgent()
});
}
async logSecurityEvent(event) {
await this.log({
...event,
timestamp: new Date(),
severity: this.calculateSeverity(event)
});
}
}
2. Insufficient Monitoring (Eksik İzleme)
Örnek: Güvenlik olaylarının gerçek zamanlı izlenmemesi.
// Kötü örnek
function handleRequest(req, res) {
processRequest(req);
res.send('OK');
}
// İyi örnek
class SecurityMonitor {
constructor() {
this.alertThresholds = {
failedLogins: 5,
suspiciousActivities: 3
};
}
async monitorSecurityEvents() {
const events = await this.getRecentEvents();
// Başarısız giriş denemelerini kontrol et
const failedLogins = this.countFailedLogins(events);
if (failedLogins >= this.alertThresholds.failedLogins) {
await this.triggerAlert('Çok sayıda başarısız giriş denemesi');
}
// Şüpheli aktiviteleri kontrol et
const suspiciousActivities = this.detectSuspiciousActivities(events);
if (suspiciousActivities.length >= this.alertThresholds.suspiciousActivities) {
await this.triggerAlert('Şüpheli aktiviteler tespit edildi');
}
}
}
Korunma Yöntemleri
- Kapsamlı günlük kaydı tutun
- Gerçek zamanlı izleme yapın
- Uyarı mekanizmaları kurun
- Günlük analizi yapın
- Güvenlik olaylarına müdahale planı hazırlayın
Örnek Kod
Secure Logging and Monitoring Example (Güvenli Günlük ve İzleme Örneği)
class SecuritySystem {
constructor() {
this.logger = new SecurityLogger();
this.monitor = new SecurityMonitor();
this.alertSystem = new AlertSystem();
}
async handleSecurityEvent(event) {
// Olayı kaydet
await this.logger.logSecurityEvent(event);
// Olayı analiz et
const analysis = await this.analyzeEvent(event);
// Gerekirse uyarı gönder
if (analysis.requiresAlert) {
await this.alertSystem.sendAlert({
type: analysis.alertType,
severity: analysis.severity,
details: analysis.details
});
}
// İzleme sistemini güncelle
await this.monitor.updateMetrics(event);
// Rapor oluştur
if (analysis.requiresReport) {
await this.generateReport(event, analysis);
}
}
async analyzeEvent(event) {
return {
requiresAlert: this.shouldAlert(event),
alertType: this.determineAlertType(event),
severity: this.calculateSeverity(event),
details: this.getEventDetails(event),
requiresReport: this.shouldGenerateReport(event)
};
}
}