:quality(75)/2024_2_6_638428536271632534_xss-la-gi-1-1.jpg)
XSS là gì? Tổng hợp những thông tin cần biết về XSS dành cho người học lập trình
XSS là gì? Tấn công XSS còn được biết đến với một cái tên khác là Cross-Site Scripting. Vấn đề này trực tiếp ảnh hưởng đến cơ chế bảo mật của một trang web thông qua lỗ hổng. Vậy có mấy kiểu khai thác XSS? Giải pháp ngăn ngừa, sàng lọc và vá các lỗ hổng như thế nào? Mời bạn đọc theo dõi đáp án được FPT Shop bật mí ngay sau đây!
Cross-Site Scripting - XSS là gì?
Cross-Site Scripting (XSS) là một loại tấn công phổ biến trong lĩnh vực bảo mật web. Tấn công XSS xảy ra khi kẻ tấn công chèn mã độc hại vào trang web hoặc ứng dụng web được hiển thị đến người dùng cuối cùng.
Loại mã độc hại này thường được thực thi trong trình duyệt web của người dùng. XSS cho phép kẻ tấn công ăn cắp thông tin phiên làm việc, thực hiện các hành động thay thế thủ tục trên trang web hoặc thậm chí kiểm soát trình duyệt của người dùng.
Có ba loại chính của tấn công XSS
- Reflected XSS: Mã độc hại được chèn vào URL hoặc form và sau đó được "phản ánh" (reflected) trở lại người dùng qua các thông điệp lỗi hoặc phản hồi của trang web.
- Stored XSS: Mã độc hại được lưu trữ trên máy chủ web và được hiển thị cho tất cả người dùng truy cập vào trang web đó.
- DOM-based XSS: Tấn công xảy ra trên phía máy khách, nơi mà mã độc hại thực hiện bằng cách thay đổi DOM (Document Object Model) của trang web một cách không an toàn.

Để ngăn chặn tấn công XSS, các nhà phát triển web thường áp dụng các biện pháp bảo vệ bao gồm "escaping" (chuyển đổi các ký tự đặc biệt trong mã HTML thành HTML entities). Ngoài ra, bạn có thể sử dụng HTTPOnly flag để ngăn chặn việc truy cập thông tin phiên làm việc thông qua JavaScript. Hãy xác thực dữ liệu đầu vào một cách cẩn thận trước khi hiển thị chúng trên trang web.
Những kiểu khai thác XSS cơ bản
STORED-XSS
Cuộc tấn công Stored - XSS xảy ra khi mã độc hại được lưu trữ trên web máy chủ và sau đó, nó được hiển thị cho tất cả người dùng truy cập vào trang web. Vấn đề xuất hiện khi một kẻ tấn công chèn mã độc hại vào cơ sở dữ liệu hoặc bất kỳ trạng thái lưu trữ dữ liệu nào mà trang web sử dụng để hiển thị nội dung.

Khi người dùng truy cập trang web đó thì mã độc hại sẽ được tải và thực thi trong trình duyệt của họ, tiềm ẩn nguy cơ lớn đối với tính toàn vẹn và bảo mật của thông tin cá nhân.
Nguyên tắc hoạt động của STORED-XSS như sau:
- Kẻ tấn công chèn mã độc hại (ví dụ: JavaScript độc hại) vào cơ sở dữ liệu hoặc các thành phần khác của trang web sẽ được lưu trữ.
- Khi người dùng truy cập trang web, nội dung sẽ được tải xuống từ cơ sở dữ liệu chứa mã độc hại và hiển thị trực tiếp trong trình duyệt của họ.
- Mã độc hại thực thi trong môi trường trình duyệt của người dùng có thể dẫn đến việc đánh cắp thông tin cá nhân, thực hiện các hành động trái phép hoặc thậm chí kiểm soát trang web đó.
Ví dụ minh họa
Hãy xem xét một trang web thương mại điện tử cho phép người dùng đăng đánh giá sản phẩm. Nếu một kẻ tấn công có thể chèn mã độc hại vào phần đánh giá và lưu trữ nó trên máy chủ, khi người dùng truy cập trang sản phẩm đó, mã độc hại sẽ được tải và thực thi trong trình duyệt của họ mà không cần họ thực hiện bất kỳ hành động gì khác.

Khi người dùng chọn xem đánh giá hoặc trang chi tiết sản phẩm, mã độc hại sẽ thực thi trong môi trường trình duyệt của họ. Điều này thường dẫn đến tình trạng đánh cắp thông tin phiên làm việc. Kẻ xấu sẽ thực hiện các hành động trái phép như đổi mật khẩu hoặc thậm chí kiểm soát tài khoản của người dùng đó trên trang web.
REFLECTED XSS
Reflected XSS là một loại tấn công thường xảy ra khi các dữ liệu đầu vào từ người dùng không được xử lý theo tiêu chuẩn an toàn. Sau đó, nó sẽ được "phản ánh" (reflected) trở lại cho người dùng trong cơ chế phản hồi từ máy chủ web.
Kẻ tấn công thường chèn mã độc hại vào các tham số của URL hoặc một mẫu web khác. Khi người dùng truy cập đến URL đó, mã độc hại được "phản hồi" lại và thực thi trong trình duyệt của họ.

Cơ chế tấn công Reflected XSS diễn ra như sau:
- Kẻ tấn công xâm nhập mã độc hại vào các tham số của URL hoặc các trường dữ liệu khác trên trang web mục tiêu.
- Khi người dùng truy cập vào URL chứa các tham số này, trình duyệt của họ sẽ gửi yêu cầu tới máy chủ web và máy chủ web sẽ tạo một phản hồi chứa mã độc hại từ các tham số này.
- Mã độc hại được thực thi trong môi trường trình duyệt của người dùng dẫn đến việc đánh cắp thông tin cá nhân, thực hiện các hành động trái phép hoặc thậm chí kiểm soát trang web đó.
Ví dụ minh họa
Cuộc tấn công Reflected XSS xuất hiện khi một người dùng nhận được một email hoặc nhấp vào một liên kết chứa một URL với các tham số chứa mã độc hại. Khi họ truy cập vào URL đó, mã độc hại được phản hồi lại và thực thi trong trình duyệt của họ mà không cần họ thực hiện bất kỳ hành động nào khác.
DOM- BASED XSS
XSS dựa trên DOM (Cross-Site Scripting) là một loại tấn công mà mã độc hại được thực thi trong môi trường trình duyệt web của người dùng thông tin qua DOM.

Cơ chế tấn công của XSS dựa trên DOM thường diễn ra như sau:
- Kẻ tấn công thường sử dụng một URL hoặc một hành động của người dùng để chèn mã độc hại vào phía khách hàng, thường thông qua các tham số trong URL hoặc giá trị của các thẻ HTML, ví dụ như biểu mẫu đầu vào.
- Mã độc hại sẽ thay đổi DOM của trang web, thông thường sẽ thay đổi nội dung hoặc thuộc tính của các phần tử trang web.
- Khi các trang web tạo và hiển thị lại DOM, mã độc hại sẽ được thực thi trong môi trường của người dùng trình duyệt.
Ví dụ minh họa
Công cụ tấn công XSS dựa trên DOM có thể xảy ra khi một trang web sử dụng JavaScript để lấy dữ liệu từ URL và hiển thị dữ liệu đó trong DOM mà không kiểm tra hoặc xử lý toàn bộ dữ liệu đầu vào này. Kẻ tấn công có thể thiết lập một URL chứa nhiều chất độc hại và khi người dùng truy cập vào URL này, mã độc hại sẽ được thực thi trong môi trường trình duyệt của chúng.
Giải pháp ngăn ngừa, lọc và vá các lỗ hổng XSS
Để ngăn chặn, lọc và vá các lỗ XSS (Cross-Site Scripting) thì người dùng cần triển khai các biện pháp bảo mật cụ thể. Dưới đây là một vài giải pháp biến phổ để đối phó với XSS lỗi mà bạn nên tham khảo:
Xác thực và thoát dữ liệu đầu vào
Kiểm tra tính hợp lệ và tính hợp lệ của dữ liệu đầu vào từ người dùng trước khi sử dụng nó trong HTML, JavaScript cảnh ngữ hoặc bất kỳ ngôn ngữ nào khác có XSS cơ sở. Escape (thôi không thực thi) dữ liệu trước khi hiển thị trong ngữ cảnh HTML để ngăn chặn mã độc hại được thực thi.
Ví dụ minh họa
Trong trường hợp một ứng dụng web chấp nhận đầu vào từ người dùng, dữ liệu này phải được kiểm tra và sử dụng các phương pháp thoát. Chẳng hạn như htmlspecialchars trong PHP, để ngăn chặn các ký tự đặc biệt trong HTML như '<', '>', '&', và '"' được hiển thị đúng cách và không thực thi mã JavaScript độc hại.
Sử dụng HTTPOnly Flag
Sử dụng cờ HTTPOnly khi đặt cookie để ngăn chặn truy cập phiên bản công việc thông tin qua JavaScript. Điều này giúp bảo vệ thông tin đăng nhập và phiên bản thông tin đang hoạt động khỏi cuộc tấn công XSS.

Ví dụ minh họa
Một trang web sử dụng cờ HTTPOnly khi đặt cookie để xác thực giúp ngăn chặn truy cập thông tin đăng nhập qua JavaScript.
Chính sách bảo mật nội dung (CSP)
CSP là một cách hiệu quả để giúp ngăn chặn lỗ hổng XSS bằng cách xác định những nguồn tài nguyên có thể tải xuống trên trang web. CSP cung cấp tài nguyên tài nguyên giới hạn chính sách và chế độ thực thi mã JavaScript không hoàn toàn.

Ví dụ minh họa
Một ứng dụng phát triển web khai CSP để xác định các tài nguyên như tập lệnh, biểu định kiểu, hình ảnh chỉ được tải xuống từ các nguồn đáng tin cậy.
Kiểm tra bảo mật thường xuyên
Thường xuyên kiểm tra bảo mật và kiểm tra ổ XSS trên ứng dụng web để phát hiện và vá lỗi một cách chính xác. Sản phẩm bảo mật chuyên nghiệp hoặc các công cụ kiểm tra bảo mật tự động có thể được sử dụng để thực hiện kiểm tra này.

Đánh giá xu hướng tấn công XSS
Cách tấn công của XSS đang có những diễn biến cụ thể và ảnh hưởng đến các ngành nghề, doanh nghiệp khác nhau. Dưới đây là một số điểm chính về xu hướng tấn công của XSS mà bạn nên tham khảo:

Tỷ lệ tấn công
Mặc dù có sự tăng cường phòng thủ từ phía các công ty nhưng tỷ lệ lỗ hổng XSS vẫn cao với mức dao động từ 17% đến gần 50% tùy thuộc vào nguồn dữ liệu và cách tính toán. Điều này cho thấy tấn công XSS vẫn là một rủi ro lớn đối với ứng dụng web.
Tăng cường vấn đề an ninh mạng
Mức độ nghiêm trọng của cuộc tấn công XSS cũng được thấy rõ qua việc tăng mức độ tổn thất tài chính. Số tiền mà các công ty trả cho những lỗ hổng này đã tăng lên đáng kể. Đây cũng là điều đáng lo ngại và đòi hỏi các biện pháp bảo mật mạnh mẽ hơn.
Mục tiêu của cuộc tấn công
Các ngành như Giải trí, Tài chính, Giáo dục, CNTT, Chính phủ và Giao thông đã trở thành mục tiêu thông thường của cuộc tấn công XSS. Điều này cho thấy sự đa dạng và rộng lớn của mục tiêu của các kẻ tấn công trong việc tìm kiếm lỗ hổng XSS.
Tấn công vào dịch vụ tài chính
Dữ liệu từ Akamai chỉ ra rằng có tới 75% các cuộc tấn công vào dịch vụ tài chính nhắm mục tiêu trực tiếp các API thông qua XSS với hàng chục triệu cuộc tấn công diễn ra. Từ đó cho thấy sự tập trung và tác động đáng kể của XSS vào lĩnh vực tài chính.
Tạm kết
Qua những chia sẻ từ FPT Shop đã giúp bạn đọc tìm hiểu XSS là gì? Chúng ta có thể thấy với cuộc tấn công XSS đã gây ra tác hại nghiêm trọng đến ngành an ninh mạng. Điều này đòi hỏi sự cảnh giác cao độ cũng như khả năng tăng cường biện pháp bảo mật, ngăn chặn và đối phó với những mối đe dọa này.
Xem thêm:
- CLI là gì? Cập nhật những lợi ích tuyệt vời và cách thức hoạt động cơ bản của CLI
- Khám phá đặc điểm và nguyên lý hoạt động của mô hình bảo mật toàn diện Zero Trust
Ngoài ra, FPT Shop mang đến rất nhiều thiết bị công nghệ hiện đại như máy tính, điện thoại, máy tính bảng, phụ kiện... Khách hàng có thể theo dõi trang chủ hoặc ghé thăm cửa hàng để tậu ngay những sản phẩm chất lượng với giá cả cực kỳ phải chăng.
:quality(75)/estore-v2/img/fptshop-logo.png)
:quality(75)/2024_1_3_638399185193842635_smb-la-gi-1-1.jpg)
:quality(75)/2020_5_18_637254101140334650_bat-mi-con-chip-giup-samsung-galaxy-s20-chong-bi-tan-cong-phan-cung-3.jpg)
:quality(75)/2019_10_24_637075450585768434_2.jpg)
:quality(75)/2021_2_23_637496889590497046_ios-14-5-cover.jpg)
:quality(75)/2023_12_6_638374986865016987_dos-la-gi_.jpg)
:quality(75)/2018_12_2_636793453178605083_cyradar-1.jpg)