Command Palette

Search for a command to run...

Thuật ngữ XSS (Cross-Site Scripting)

XSS (Tấn công kịch bản chéo trang) là gì?

Tấn công kịch bản chéo trang, hay XSS, là một lỗ hổng bảo mật trên các trang web cho phép kẻ tấn công thêm các kịch bản độc hại vào trang web. Phần lớn các kịch bản này được viết bằng JavaScript.

Nếu ai đó truy cập vào một trang bị ảnh hưởng bởi XSS, trình duyệt của họ sẽ chạy kịch bản của kẻ tấn công. Điều này có thể dẫn đến việc đánh cắp cookie, chiếm đoạt phiên làm việc, hoặc thực hiện các hành động mà không có sự cho phép của người dùng.

XSS, giống như SQL Injection, thường xuyên được liệt kê trong OWASP Top 10 như một trong những lỗ hổng ứng dụng web phổ biến nhất.

plexicus-xss-attack-ilustration

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

XSS thường nhắm vào các ứng dụng web không kiểm tra và làm sạch đúng cách đầu vào của người dùng.

Ví dụ, nếu một hộp bình luận cho phép HTML hoặc JavaScript thô mà không có bất kỳ lọc nào, kẻ tấn công có thể thêm mã như sau:

<script>alert('Hacked!');</script>

Khi nạn nhân xem trang, mã độc hại sẽ chạy trong trình duyệt của họ.

Tại sao XSS quan trọng trong an ninh mạng

XSS có thể dẫn đến một vi phạm lớn hơn:

  • Chiếm đoạt tài khoản (đánh cắp cookie phiên để mạo danh người dùng)
  • Trộm cắp dữ liệu (thu thập dữ liệu từ các biểu mẫu như mật khẩu hoặc thẻ tín dụng)
  • Tấn công lừa đảo (tiêm các biểu mẫu đăng nhập giả mạo)
  • Phát tán phần mềm độc hại (chuyển hướng người dùng đến các trang web độc hại)

Các loại XSS

  1. XSS dựa trên DOM
  2. Cuộc tấn công xảy ra hoàn toàn trong trình duyệt bằng cách thao tác với Mô hình Đối tượng Tài liệu (DOM) mà không liên quan đến máy chủ.
  3. XSS lưu trữ
  4. Script độc hại được lưu trữ vĩnh viễn trên máy chủ, chẳng hạn như cơ sở dữ liệu, trang hồ sơ.
  5. XSS phản chiếu
  6. Script được phản chiếu từ máy chủ web (ví dụ, trong URL hoặc thông báo lỗi), script sẽ được thực thi khi nạn nhân nhấp vào liên kết được tạo bởi kẻ tấn công.

Cách ngăn chặn XSS

  • Làm sạch đầu vào & mã hóa đầu ra: luôn làm sạch dữ liệu đầu vào của người dùng trước khi xử lý, chuyển đổi đầu vào của người dùng thành định dạng an toàn
  • Sử dụng Chính sách Bảo mật Nội dung (CSP): hạn chế những script nào có thể được thực thi trong trình duyệt.
  • Tránh sử dụng eval() và JavaScript nội tuyến: để giảm thiểu rủi ro tiêm nhiễm.
  • Kiểm tra bảo mật (DAST/IAST): thực hiện kiểm tra bảo mật để phát hiện sớm các lỗ hổng

Ví dụ trong trường hợp thực tế - Samy worm (MySpace, 2005)

Điều gì đã xảy ra: Samy Kamkar đã công bố một hồ sơ MySpace chứa một tải trọng XSS lưu trữ. Khi người dùng khác xem hồ sơ, tải trọng chạy trong trình duyệt của họ, nó (a) thêm Samy làm bạn, (b) thêm cụm từ “Samy là anh hùng của tôi” vào hồ sơ của họ, và (c) tự sao chép vào các trang hồ sơ của những người dùng đó.

Tác động: Con sâu tự lan truyền đến ~1 triệu người dùng trong vòng ~20 giờ, buộc MySpace phải tạm thời ngừng hoạt động.

Tại sao nó hoạt động: MySpace cho phép HTML/thuộc tính không được thoát trong các trường hồ sơ, cho phép thực thi kịch bản lưu trữ trong trình duyệt của khách truy cập.

Bài học / sửa chữa: Mã hóa đầu ra đúng cách, làm sạch đầu vào, loại bỏ HTML trong các trường hồ sơ và vá lỗi nhanh chóng. Samy sau đó đã phải đối mặt với hậu quả pháp lý, và MySpace đã triển khai các bộ lọc.

Thuật ngữ liên quan

Bước Tiếp Theo

Sẵn sàng bảo vệ ứng dụng của bạn? Chọn con đường của bạn phía trước.

Tham gia cùng hơn 500 công ty đã bảo vệ ứng dụng của họ với Plexicus

SOC 2 Compliant
ISO 27001 Certified
Enterprise Ready