What is Cross-site Scripting (XSS)?

Là một lỗ hổng bảo mật web cho phép kẻ tấn công phá vỡ các same origin policy, vốn được sử dụng để tách biệt các trang web khác nhau. XSS có thể được dùng để giả dạng người dùng nhằm thực hiện những hành động mà người dùng có thể thực hiện và truy cập đến dữ liệu của người dùng. Thậm chí, nếu nạn nhân có đặc quyền thì attacker có thể chiếm quyền kiểm soát toàn bộ ứng dụng.

How Does XSS Work?

XSS hoạt động bằng cách thao túng trang web để nó trả về các mã độc JavaScript cho người dùng. Khi mã độc này thực thi trong trình duyệt của nạn nhân thì attacker có thể toàn quyền kiểm soát các tương tác của họ với ứng dụng.

XSS Proof of Concept

Chúng ta có thể xác nhận đa số các loại lỗ hổng XSS tồn tại trên trang web bằng cách sử dụng hàm alert(). Tuy nhiên, đối với Chrome phiên bản 92 trở về sau thì các cross-site origin <iframe> bị chặn thực thi hàm alert(). Trong trường hợp đó, ta cần dùng một payload khác chẳng hạn như hàm print().

What Are the Types of XSS Attacks?

Có ba loại tấn công XSS phổ biến:

  • Reflected XSS: mã độc nằm trong HTTP request.
  • Stored XSS: mã độc nằm trong database của server.
  • DOM XSS: mã độc tồn tại trong client-side code.

Prevention

Để ngăn chặn tấn công XSS, ta có thể xóa hoặc HTML-encode các ký tự nguy hiểm chẳng hạn như <, >, "= ở trong dữ liệu đầu vào. Để tự động hóa việc này, ta cũng có thể sử dụng tường lửa ở mức ứng dụng (application-level firewall).

Attention

Đôi khi lập trình viên nghĩ rằng việc giới hạn miền giá trị của dữ liệu đầu vào ở phía client là đủ tốt. Tuy nhiên, kẻ tấn công có thể gửi request trực tiếp đến server mà không thông qua giao diện.

Resources