Skip to content

Security Overview

The DD logging library features built-in multi-layer security mechanisms, providing comprehensive log security from data filtering to audit tracing.

Security Layers

LayerMechanismDescription
Data LayerSensitive Data FilteringAutomatic redaction of passwords, keys, etc.
Path LayerPath Security ValidationPrevents path traversal, symlink attacks
Pattern LayerReDoS ProtectionDetects dangerous regex patterns
Audit LayerAudit LoggingRecords all security events
Integrity LayerHMAC SigningEnsures logs cannot be tampered with

Sensitive Data Filtering

DD has built-in automatic sensitive data detection and redaction:

go
logger, _ := dd.New(dd.Config{
    Security: dd.DefaultSecurityConfig(),
})

// Password field automatically redacted
logger.InfoWith("login",
    dd.String("username", "admin"),
    dd.String("password", "s3cr3t"),  // Output: [REDACTED]
)

Supported custom patterns:

go
filter, _ := dd.NewCustomSensitiveDataFilter(
    `(?i)password\s*[:=]\s*\S+`,
    `(?i)api[_-]?key\s*[:=]\s*\S+`,
    `\b\d{16,19}\b`,  // Credit card numbers
)

See Security Filtering API.

Path Security

FileWriter includes multi-layer path security validation:

ProtectionDescription
Path TraversalRejects ../ and similar path traversal
Null BytesRejects null byte injection
Overlong EncodingDetects UTF-8 overlong encoding
SymlinksConfigurable symlink prohibition
Hard LinksConfigurable hard link prohibition
Path LengthLimits maximum path length
go
// Path traversal attack automatically rejected
fw, err := dd.NewFileWriter("../../../etc/passwd", dd.DefaultFileWriterConfig())
// err: PATH_TRAVERSAL

Compliance Configuration

DD provides industry compliance presets:

PresetCompliance StandardApplicable Industry
HealthcareConfig()HIPAAHealthcare
FinancialConfig()PCI-DSSFinance
GovernmentConfig()Government StandardsPublic Sector
go
// HIPAA compliance
logger, _ := dd.New(dd.Config{
    Security: dd.HealthcareConfig(),
})

Audit Logging

All security events can be tracked through audit logging:

go
audit, _ := dd.NewAuditLogger(dd.DefaultAuditConfig())
defer audit.Close()

audit.LogSecurityViolation("sql_injection", "SQL injection", map[string]any{
    "input": "' OR 1=1 --",
})

See Audit Logging API.

Log Integrity

Ensure logs cannot be tampered with through HMAC signing:

go
cfg, _ := dd.DefaultIntegrityConfigSafe()
signer, _ := dd.NewIntegritySigner(cfg)
signature := signer.Sign(logMessage)
// For verification: signer.Verify(signedEntry)

See Integrity Signing API.

Next Steps