Mid #xss#csrf#security#samesite
XSS và CSRF khác nhau thế nào? Cách phòng chống?
⚡ Trả lời nhanh
XSS: kẻ tấn công chèn script chạy trong trang của bạn (đánh cắp dữ liệu, thao tác thay người dùng); chống bằng escape/encode output, tránh innerHTML, CSP. CSRF: lợi dụng cookie tự gửi để khiến người dùng đã đăng nhập gửi request ngoài ý muốn; chống bằng SameSite cookie và CSRF token.
| XSS | CSRF | |
|---|---|---|
| Bản chất | Chạy mã độc trong origin của bạn | Mượn phiên đăng nhập từ site khác |
| Kẻ tấn công đọc được response | Có | Không (chỉ gây tác động) |
| Chống | Escape output, CSP, HttpOnly, sanitize | SameSite, CSRF token, kiểm tra Origin |
// XSS: nguy hiểm
el.innerHTML = userInput;
// An toàn: coi là text
el.textContent = userInput;
Set-Cookie: sid=...; HttpOnly; Secure; SameSite=Lax
- Loại XSS: stored, reflected, DOM-based.
- Framework như React tự escape giá trị trong JSX; rủi ro nằm ở
dangerouslySetInnerHTML, URLjavascript:, thư viện bên thứ ba. - CSRF chỉ nguy hiểm với auth tự gửi (cookie); API dùng header
Authorizationthủ công ít bị CSRF nhưng dễ bị XSS đánh cắp token nếu lưu ở localStorage. - Nếu có XSS, CSRF token cũng vô hiệu vì script đọc được token.