XSS Prevention and Mitigation

Preventing XSS requires a multi-layered approach that addresses both input handling and output encoding.

Output Encoding

Context-sensitive output encoding is the most important defense:

  • HTML body: Encode special characters
  • HTML attributes: Encode all special characters
  • JavaScript: Use JavaScript encoding for data in script blocks
  • URL: Encode data in URL parameters
  • CSS: Encode data in style blocks

Content Security Policy (CSP)

CSP restricts which scripts can execute on a page:

Content-Security-Policy: default-src 'self'; script-src 'self'

Framework Protections

Modern frameworks provide built-in XSS protections:

  • React automatically escapes JSX expressions
  • Angular sanitizes values bound to the DOM
  • Vue.js escapes HTML interpolation
  • Django templates auto-escape by default