XSS là lỗ hổng cho phép attacker inject script độc hại chạy trong browser của nạn nhân — đánh cắp session, redirect user, sửa nội dung trang.
- Stored XSS — script được lưu vào DB (comment, profile), tấn công mọi user xem trang.
- Reflected XSS — script nằm trong URL parameter, server phản chiếu lại trong response — thường phát tán qua link phishing.
- DOM-based XSS — client-side code đọc từ URL/storage rồi inject vào DOM không qua server (
location.hash→innerHTML). - Phòng chống — encode theo đúng context (HTML/JS/URL); React JSX tự escape nhưng
dangerouslySetInnerHTMLvẫn nguy hiểm; dùngtextContent/createElementthay vìinnerHTMLvới user input. - Khi phải render HTML từ user (rich text editor) — sanitize bằng DOMPurify:
DOMPurify.sanitize(userHtml). - Defense in depth — Content Security Policy chặn inline script và script từ nguồn lạ; cookie
HttpOnlykhiến JS không đọc được session token dù có XSS; Subresource Integrity (SRI) verify script từ CDN không bị sửa đổi.