Tin tức và phân tích của tất cả các thiết bị di động

Tập lệnh trang web chéo là gì?

Một trong những loại lỗ hổng phổ biến nhất trên các trang web được gọi là “Cross-Site Scripting” hoặc “XSS”. Các lỗ hổng XSS là những lỗ hổng mà người dùng có thể thực thi JavaScript. Có một số biến thể của lỗ hổng XSS, với các mức độ nghiêm trọng khác nhau.

Vấn đề với việc kẻ tấn công có thể thực thi JavaScript trong các phiên của người dùng khác là kẻ tấn công có thể thực hiện bất kỳ điều gì trên trang web mà nạn nhân nhìn thấy. Điều này bao gồm chuyển hướng nạn nhân đến các trang web bên ngoài, đánh cắp mã thông báo xác thực và theo dõi chi tiết thanh toán.

Dạng lỗ hổng XSS nghiêm trọng nhất là tập lệnh xuyên trang “được lưu trữ” hoặc “liên tục”. Ở đây, kẻ tấn công có thể tạo một tải trọng XSS và sau đó gửi nó để được lưu trong cơ sở dữ liệu. Với một khai thác XSS được lưu trong cơ sở dữ liệu, có thể ảnh hưởng đến những người dùng khác trong một thời gian dài.

Một dạng khác của Cross-Site Scripting là “Reflection”, dạng này không được lưu bất cứ lúc nào, nhưng tải trọng được đưa vào trình duyệt. Thông thường, loại XSS này là một phần của các cuộc tấn công lừa đảo, trong đó kẻ tấn công cố gắng lừa nạn nhân nhấp vào một liên kết độc hại.

Thông thường, hầu hết các cuộc tấn công XSS đều có tải trọng được gửi đến máy chủ tại một số thời điểm, nhưng một số cuộc tấn công hoàn toàn là phía máy khách, không bao giờ được gửi đến máy chủ và thay vào đó chỉ ảnh hưởng đến JavaScript phía máy khách. Đây được gọi là XSS dựa trên DOM vì nó nằm trong Mô hình đối tượng tài liệu JavaScript hoặc DOM. Loại lỗ hổng này đặc biệt khó xác định và sửa chữa vì các lỗ hổng này không bao giờ được máy chủ phát hiện và do đó không thể đăng nhập.

Về mặt lịch sử, kỹ thuật ngăn chặn lỗ hổng XSS bao gồm lọc tất cả dữ liệu do người dùng gửi, sử dụng danh sách khối để từ chối bất kỳ thông báo nào có ký tự hoặc từ quan trọng trong JavaScript. Điều này có xu hướng dẫn đến một cuộc chạy đua vũ trang để tìm các vòng bỏ qua cho bộ lọc, đồng thời ngăn cản một số yêu cầu hợp pháp từ người dùng. Giải pháp chính xác là sử dụng các thực thể html để mã hóa dữ liệu do người dùng gửi. với các biểu mẫu thực thể HTML được bật, các ký tự được mã hóa tự động thành một định dạng mà trình duyệt biết để hiển thị là các ký hiệu chính xác nhưng không coi chúng là mã.