Lesson 31 of 55 · javascript
Security – XSS, CSP & Input Sanitisation
Duration: 11 mins
Common attacks:
- Cross‑Site Scripting (XSS) – inject malicious script.
- DOM‑based XSS – unsafe
innerHTML/eval.
Mitigations:
- Escape user input before inserting into HTML (
textContent,createTextNode). - Deploy a Content Security Policy (CSP) to restrict script sources.
- Avoid
eval,new Function, and string‑basedsetTimeout.
Example: CSP header (meta fallback)
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self' https://cdn.jsdelivr.net; object-src 'none';">
Sanitising HTML with DOMPurify
import DOMPurify from 'dompurify';
const clean = DOMPurify.sanitize(userHtml);
document.getElementById('output').innerHTML = clean;