</>
⌕
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.

XSSCSRF
Bản chấtChạy mã độc trong origin của bạnMượn phiên đăng nhập từ site khác
Kẻ tấn công đọc được responseCóKhông (chỉ gây tác động)
ChốngEscape output, CSP, HttpOnly, sanitizeSameSite, 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, URL javascript:, thư viện bên thứ ba.
  • CSRF chỉ nguy hiểm với auth tự gửi (cookie); API dùng header Authorization thủ 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.
🃏 Ôn bằng flashcard