XSS l(Cross-Site Scripting) là một lỗ hổng bảo mật phổ biến trong ứng dụng web, xảy ra khi kẻ tấn công tiêm mã độc (thường là JavaScript) vào trang web để thực thi trên trình duyệt của người dùng khác, từ đó có thể đánh cắp thông tin nhạy cảm như cookie, phiên đăng nhập, hoặc thậm chí thay đổi nội dung trang web.
- Stored XSS: Mã độc được lưu trữ trong cơ sở dữ liệu và được thực thi khi người dùng truy cập trang web.
- Reflected XSS: Mã độc được phản ánh trong phản hồi từ máy chủ, thường thông qua các tham số URL.
- DOM-based XSS: Mã độc được thực thi thông qua thao tác DOM mà không cần tương tác với máy chủ.
- Escape (Thoát) dữ liệu đầu vào: Luôn escape các ký tự đặc biệt (như
<, >, &, ", ') khi hiển thị dữ liệu từ người dùng lên trang web. - Validate đầu vào: Kiểm tra và lọc dữ liệu đầu vào từ phía frontend (và cả backend nếu có thể).
- Sử dụng Content Security Policy (CSP): Thiết lập CSP để hạn chế các nguồn script được phép thực thi, giúp ngăn chặn việc tiêm mã độc từ bên ngoài.
- Sử dụng thư viện/framework an toàn: Các framework hiện đại như React, Vue, Angular đều có cơ chế tự động escape dữ liệu, nhưng vẫn cần kiểm tra kỹ khi sử dụng dangerouslySetInnerHTML hoặc v-html.
Trong dự án thực tế, mình luôn áp dụng các biện pháp trên để đảm bảo ứng dụng an toàn trước các cuộc tấn công XSS.