Skip to content

Security Overview

DD has multi-layered security built in, fully safeguarding log security from data filtering to audit tracing.

Security Layers

LayerMechanismDescription
DataSensitive-data filteringAuto-redact passwords, keys, etc.
PathPath-safety validationPrevent path-traversal and symlink attacks
PatternReDoS protectionDetect dangerous regex patterns
AuditAudit loggingRecord key security events (redaction, rate-limit, violations, etc.)
IntegrityHMAC signingEnsure logs are tamper-evident

Sensitive-Data Filtering

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

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

// The password field is auto-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 number
)

See Security Filtering API.

Path Security

FileWriter has multi-layered path-safety validation built in:

ProtectionDescription
Path traversalReject ../ and similar traversal
Null bytesReject null-byte injection
Overlong encodingDetect UTF-8 overlong encoding
SymlinksConfigurable symlink rejection
HardlinksConfigurable hardlink rejection
Path lengthCap maximum path length
go
// Path-traversal attack auto-rejected
fw, err := dd.NewFileWriter("../../../etc/passwd", dd.DefaultFileWriterConfig())
// err.Error(): "path traversal detected"

Compliance Configuration

DD provides industry-compliance presets:

PresetCompliance StandardIndustry
HealthcareConfig()HIPAAMedical
FinancialConfig()PCI-DSSFinancial
GovernmentConfig()Government standardPublic sector
go
// HIPAA compliance
logger, _ := dd.New(dd.Config{
    Security: dd.HealthcareConfig(),
})

Audit Logging

All security events can be tracked via 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

HMAC signing ensures logs cannot be tampered with:

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

See Integrity Signing API.

Next Steps