---
title: Protect Against Log Injection
impact: HIGH
impactDescription: prevents log forging and exploitation
tags: logging, injection, sanitization, security, csharp
---

## Protect Against Log Injection

Attackers can inject newlines to forge log entries or confuse monitoring systems.

**Incorrect (raw logging):**

```csharp
_logger.LogInformation("User logged in: " + username); 
// Attacker: "admin\n[ERROR] System failure"
```

**Correct (structured logging or sanitization):**

```csharp
// Structured Logging (Serilog/MEL) - Safe by default as it treats data as properties
_logger.LogInformation("User logged in: {Username}", username);

// If using simple text logging, sanitize
string SanitizeLog(string input)
{
    return input.Replace("\n", "_").Replace("\r", "_");
}
_logger.LogInformation($"User logged in: {SanitizeLog(username)}");
```

**Tools:** Serilog, Roslyn Analyzers, SonarQube
