XSS là gì?
XSS (Cross-site Scripting) là một dạng tấn công web phổ biến, trong đó hacker chèn mã JavaScript độc hại vào website thông qua input người dùng. Khi người dùng khác truy cập trang web này, script sẽ thực thi ngay trên trình duyệt của họ, dẫn tới nhiều hậu quả nghiêm trọng.
Cách hoạt động của tấn công XSS
Ví dụ một form bình luận:
<script>alert('XSS Attack!');</script>
Nếu website không xử lý đúng cách, đoạn script này sẽ được lưu vào cơ sở dữ liệu và khi người khác truy cập trang chứa bình luận, script sẽ chạy và gây hại.
Hậu quả của XSS
- Đánh cắp cookie/session để chiếm tài khoản
- Thực thi mã JavaScript nguy hiểm trên trình duyệt người dùng
- Redirect người dùng đến trang độc hại
- Lừa đảo, giả mạo website
Các dạng XSS phổ biến
| Dạng tấn công XSS | Mô tả |
|---|---|
| Stored XSS (Persistent) | Script được lưu trong database, ảnh hưởng lâu dài và nghiêm trọng nhất. |
| Reflected XSS (Non-persistent) | Script nằm trong URL hoặc form submission, ảnh hưởng ngay lập tức khi user truy cập link độc hại. |
| DOM-based XSS | Xảy ra khi script độc hại được thực thi thông qua DOM manipulation từ phía client (frontend). |
Cách phòng chống XSS hiệu quả
- Luôn validate và sanitize đầu vào từ người dùng
- Dùng các thư viện như DOMPurify (JS), HTMLPurifier (PHP) để lọc nội dung
- Dùng HTTP header như
Content-Security-Policy (CSP) - Sử dụng framework hiện đại (React, Vue, Angular…) xử lý tự động
- Bật
HttpOnlycookie để hạn chế script lấy cắp cookie
Ví dụ thực tế: validate input PHP chống XSS
// Lọc input để chống XSS
$input = htmlspecialchars($_POST['comment'], ENT_QUOTES, 'UTF-8');
echo $input;
Dùng CSP để chống XSS
CSP giới hạn nguồn tài nguyên JS thực thi trên web:
Content-Security-Policy: script-src 'self';
Chỉ cho phép chạy script từ chính domain, ngăn script từ bên ngoài.
Công cụ kiểm tra lỗ hổng XSS
- OWASP ZAP
- Burp Suite
- XSSer, XSStrike
Kết luận
XSS là lỗ hổng web cực phổ biến và rất nguy hiểm, nhưng hoàn toàn có thể phòng ngừa. Bằng cách xử lý kỹ lưỡng input, dùng thư viện sanitize và áp dụng CSP, bạn sẽ bảo vệ được người dùng và website khỏi nguy cơ XSS tấn công.