CSRF & XSS Prevention

Preventing Cross-Site Request Forgery and Cross-Site Scripting attacks.

CSRF Protection

# CSRF Token in form
<input type="hidden" name="csrf_token" value="token123">

# Verify token on server
if (req.body.csrf_token !== req.session.csrf_token) {
    throw new Error("Invalid token");
}

CSRF Headers

# SameSite cookie
Set-Cookie: sessionId=abc123; SameSite=Strict; Secure

# Custom header
X-CSRF-Token: token123

# Check Origin header
if (req.headers.origin !== "https://trusted.com") {
    return res.status(403).send();
}

XSS Prevention

# Escape HTML output
function escapeHtml(text) {
    const map = {
        '&': '&amp;',
        '<': '&lt;',
        '>': '&gt;'
    };
    return text.replace(/[&<>]/g, c => map[c]);
}

Content Security Policy

# CSP header
Content-Security-Policy:
    default-src 'self';
    script-src 'self' 'unsafe-inline';
    style-src 'self' 'unsafe-inline';
    img-src 'self' data:

React XSS Protection

# Safe - JSX escapes by default
{userInput}
# Unsafe - dangerouslySetInnerHTML
# Safe alternative - sanitize import DOMPurify from "dompurify"; const clean = DOMPurify.sanitize(userInput);