Cross Site Scripting là gì? Các dạng tấn công và phòng chống

Lỗ hổng XSS cho phép kẻ tấn công thực hiện bằng cách chèn mã độc vào các trường dữ liệu của ứng dụng web. Đây là lỗi có mức độ nguy hiểm và được nằm trong top 10 lỗi bảo mật nghiêm trọng nhất trên OWASP (Open Web Application Security Project). Trong bài viết này, hãy cùng TTnguyen tìm hiểu cross site scripting là gì? Các loại tấn công XSS và cách ngăn chặn chúng.

Xem thêm:

Tấn công XSS là gì?

Tấn công XSS (Cross-Site Scripting) là một lỗ hỗng bảo mật cho phép kẻ tấn công chèn mã độc vào ứng dụng web. Mã độc này sau đó sẽ được thực thi trên trình duyệt của người dùng, có thể dẫn đến việc đánh cắp dữ liệu hoặc lừa đảo.

Ví dụ tấn công Cross-Site Scripting

Kẻ tấn công có thể chèn mã độc vào bình luận hoặc biểu mẫu trên trang web. Khi người dùng khác truy cập trang web và xem bình luận đó, mã độc sẽ được thực thi trên trình duyệt của họ. Mã độc này có thể được sử dụng để đánh cắp thông tin đăng nhập của người dùng, chiếm tài khoản của họ hoặc lừa họ thực hiện các hành động nguy hiểm.

Tấn công XSS là gì?

Dưới đây là một số ví dụ về mã độc XSS:

  • Script JavaScript: Mã độc này có thể được sử dụng để thực thi các hành động trên trình duyệt của người dùng, chẳng hạn như hiển thị thông báo, mở cửa sổ bật lên hoặc tải xuống phần mềm độc hại.
  • Script HTML: Mã độc này có thể được sử dụng để thay đổi giao diện của trang web hoặc lừa người dùng cung cấp thông tin cá nhân.
  • URL độc hại: URL này có thể được sử dụng để chuyển hướng người dùng đến trang web độc hại.

XSS hoạt động như thế nào?

  1. Kẻ tấn công chèn mã độc vào một ứng dụng web dễ bị tấn công. Mã độc này có thể là một đoạn mã JavaScript, HTML hoặc URL độc hại.
  2. Khi một người dùng truy cập ứng dụng web, mã độc sẽ được thực thi trong trình duyệt của người dùng.
  3. Kẻ tấn công có thể sử dụng mã độc để thực hiện các hành động sau:
    • Đánh cắp dữ liệu người dùng, chẳng hạn như tên người dùng, mật khẩu,… v.v.
    • Lừa người dùng thực hiện các hành động nguy hiểm, chẳng hạn như cung cấp thông tin cá nhân hoặc tải xuống phần mềm độc hại.

XSS hoạt động như thế nào?

Các loại tấn công Cross-Site Scripting

1. Reflected XSS

Reflected XSS là loại tấn công XSS đơn giản nhất. Nó xảy ra khi một ứng dụng web nhận dữ liệu từ người dùng và hiển thị lại dữ liệu đó trên trang web mà không qua kiểm tra kỹ lưỡng. Điều này có nghĩa là kẻ tấn công có thể chèn mã độc vào dữ liệu mà họ gửi đến ứng dụng web và mã độc đó sẽ được thực thi trên trình duyệt của người dùng khi họ truy cập trang web.

2. Stored XSS

Stored XSS là một loại tấn công bảo mật web trong đó kẻ tấn công chèn mã độc JavaScript vào một ứng dụng web. Mã độc này sau đó sẽ được lưu trữ trong cơ sở dữ liệu của ứng dụng web và được hiển thị cho người dùng khi họ truy cập.

Giả sử có một ứng dụng web có tính năng bảng tin cho phép người dùng gửi tin nhắn. Ứng dụng web này không kiểm tra kỹ lưỡng dữ liệu người dùng trước khi lưu trữ nó trong cơ sở dữ liệu.

Một kẻ tấn công có thể lợi dụng lỗ hổng này để chèn mã độc JavaScript vào một tin nhắn. Khi một người dùng khác xem tin nhắn này, mã độc JavaScript sẽ được thực thi trên trình duyệt của họ.

3. DOM based XSS

DOM-based XSS là một loại tấn công XSS xảy ra khi một ứng dụng web thực thi mã JavaScript độc hại được chèn vào DOM (Document Object Model). DOM là một cây dữ liệu đại diện cho cấu trúc của một trang web HTML hoặc XML.

Kẻ tấn công có thể chèn mã độc JavaScript vào DOM bằng cách thao tác với các trường nhập liệu của người dùng hoặc bằng cách khai thác các lỗ hổng bảo mật trong ứng dụng web.

Khi người dùng truy cập trang web bị tấn công, mã độc JavaScript sẽ được thực thi trên trình duyệt của họ, và kẻ tấn công có thể thực hiện bất kỳ hành động nào mà người dùng đó có quyền truy cập.

Các dạng tấn công XSS

Cách phòng chống tấn công XSS

1. Kiểm tra và xử lý đầu vào người dùng

– Hạn chế và lọc đầu vào:

+ Kiểm tra và loại bỏ hoặc mã hóa các ký tự đặc biệt, như dấu ngoặc nhọn, dấu gạch chéo ngược và dấu nháy kép. Điều này sẽ giúp ngăn chặn việc chèn mã độc vào câu lệnh HTML hoặc JavaScript.

+ Chỉ chấp nhận các giá trị có định dạng và kiểu dữ liệu hợp lệ.

– Sử dụng hàm escape/encode: Sử dụng các hàm phù hợp để mã hóa các giá trị người dùng trước khi chèn vào ứng dụng web.

– Sử dụng tham số truy vấn an toàn: Đảm bảo rằng các tham số truy vấn, như trong URL, được mã hóa hoặc mã hóa URL để ngăn chặn tấn công XSS.

2. Sử dụng bộ thử viện bảo mật

– Sử dụng các bộ thư viện bảo mật như OWASP ESAPI (Enterprise Security API) hoặc DOMPurify để xử lý và loại bỏ các đoạn mã độc hại từ đầu vào người dùng.

3. Thiết lập các header an toàn

– Thiết lập chính sách bảo mật Content Security Policy để xác định các nguồn tài nguyên được tin cậy và hạn chế việc chèn mã độc từ các nguồn không đáng tin cậy.

– Thiết lập header HTTP X-XSS-Protection để bật bộ lọc XSS tích hợp trên các trình duyệt hiện đại.

4. Cập nhật và bảo mật hệ thống

– Đảm bảo rằng ứng dụng web và các thành phần hệ thống khác được cập nhật đầy đủ.

– Theo dõi và ghi nhật ký các hoạt động không bình thường để phát hiện và đối phó kịp thời.

Kết luận

  • Tấn công XSS là lỗ hổng cho phép chèn mã độc để đánh cắp dữ liệu.
  • Có 3 loại tấn công XSS: Reflected XSS, Stored XSS và Dom-based XSS.
  • Các phòng chống tấn công XSS:
    • Kiểm tra xử lý đầu vào.
    • Sử dụng các thư viện bảo mật.
    • Thiết lập các header an toàn.
    • Cập nhật hệ thống.

Trên đây là một số thông tin về kỹ thuật tấn công XSS. Hy vọng qua bài viết, bạn sẽ có thêm kiến thức về an ninh mạng máy tính. Cảm ơn bạn đã tham khảo trên ttnguyen.net.

Bài viết liên quan:

các dạng tấn công trên DHCP

hướng dẫn cài đặt wireshark

Nguyễn Tiến Trường

Mình viết về những điều nhỏ nhặt trong cuộc sống, Viết về câu chuyện những ngày không có em