Download app

Quét mã QR để tải về Nhân Hòa APP

QR code
preload-home

XSS là gì? Các loại tấn công và cách phòng chống

30/10/2026, 04:55 pm
30

XSS là lỗ hổng bảo mật có thể khiến website và người dùng đối mặt với nguy cơ đánh cắp dữ liệu, chiếm quyền phiên đăng nhập hoặc giả mạo giao diện. Cùng Nhân Hòa tìm hiểu cách nhận biết và biện pháp phòng chống Cross-Site Scripting trong bài viết dưới đây.

xss attack

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

XSS attack (viết tắt của Cross-Site Scripting attack) là hình thức tấn công chèn mã độc, thường là JavaScript, vào website để mã này thực thi trên trình duyệt của người dùng. Qua đó, kẻ tấn công có thể đánh cắp thông tin đăng nhập, chiếm quyền truy cập phiên làm việc hoặc thực hiện các hành vi trái phép dưới danh nghĩa nạn nhân. 

Ví dụ: Kẻ tấn công chèn mã JavaScript độc hại vào phần bình luận của website. Khi người dùng truy cập trang chứa bình luận đó, mã có thể tự động chạy trên trình duyệt nếu website không xử lý đầu vào và đầu ra an toàn. 

Hậu quả khi website bị tấn công XSS là gì? 

Cross-Site Scripting attack gây ảnh hưởng đến cả người dùng và website, đặc biệt khi mã độc được thực thi trong ngữ cảnh của website bị lỗ hổng. Mức độ thiệt hại phụ thuộc vào loại XSS attack, quyền của người dùng và dữ liệu mà ứng dụng có thể truy cập.

  • Đánh cắp thông tin người dùng: Mã độc có thể thu thập thông tin hiển thị trên trang, dữ liệu biểu mẫu hoặc thông tin nhạy cảm mà người dùng nhập vào.
  • Phân phối phần mềm độc hại: Website bị biến thành bàn đạp để lây nhiễm mã độc sang máy tính hoặc thiết bị di động của mọi khách hàng truy cập vào trang. 
  • Thực hiện hành động trái phép: Kẻ tấn công có thể dùng phiên của người dùng để thực hiện các giao dịch tài chính trái phép, gửi tin nhắn giả mạo hoặc thay đổi mật khẩu/thông tin tài khoản.
  • Thiệt hại tài chính: Chi phí xử lý sự cố bảo mật, điều tra, đền bù cho khách hàng, hoặc tổn thất trực tiếp từ các giao dịch gian lận. 
  • Ảnh hưởng đến uy tín và hoạt động kinh doanh: Nếu XSS bị khai thác, doanh nghiệp có thể phải xử lý sự cố bảo mật, khắc phục hệ thống, hỗ trợ khách hàng và đối mặt với nguy cơ mất niềm tin từ người dùng.

>>> Xem thêm: Layer 7 DDoS là gì? Dấu hiệu và cách phòng chống

Nhân viên hỗ trợ và linh vật AI

Sở hữu website chuyên nghiệp chỉ với 9.000đ/ngày

Sở hữu kênh bán hàng riêng, thiết kế trọn gói và bàn giao thần tốc chỉ trong 3 ngày

Dùng thử miễn phí ngay
 

Các loại tấn công Cross-Site Scripting phổ biến 

Tấn công Cross-Site Scripting thường được chia thành 3 loại chính: Stored XSS, Reflected XSS và DOM-based XSS. Mỗi loại có cách thức hoạt động khác nhau, nhưng đều có thể khiến mã độc được thực thi trên trình duyệt nếu website xử lý dữ liệu không an toàn. 

Stored XSS (XSS lưu trữ)

Stored XSS xảy ra khi mã độc được lưu lại trên máy chủ và được hiển thị cho người dùng khác. Nếu website không xử lý dữ liệu an toàn trước khi hiển thị, mã độc có thể thực thi trên trình duyệt mỗi khi người dùng truy cập nội dung chứa mã.

Ví dụ: Một website thương mại điện tử cho phép người dùng đặt tên hiển thị trong hồ sơ cá nhân. Kẻ tấn công chèn mã JavaScript độc hại vào tên hiển thị. Nếu website lưu và hiển thị tên này mà không xử lý an toàn, mã độc có thể thực thi trên trình duyệt của những người xem hồ sơ đó.

Dấu hiệu nhận biết:

  • Nhiều người dùng gặp hành vi bất thường khi truy cập cùng một trang.
  • Nội dung trên trang có dấu hiệu bất thường và đi kèm các biểu hiện như cửa sổ bật lên ngoài dự kiến.
  • Hiện tượng tiếp tục xuất hiện khi tải lại trang hoặc truy cập lại nội dung liên quan.

sql injection và xss

Reflected XSS (XSS phản hồi)

Reflected XSS xảy ra khi website nhận dữ liệu từ yêu cầu của người dùng và đưa dữ liệu đó vào phản hồi mà không xử lý an toàn. Mã độc không được lưu trên máy chủ mà thực thi khi người dùng truy cập một liên kết chứa dữ liệu độc hại.

Ví dụ: Một website hiển thị lại từ khóa người dùng nhập trên trang kết quả tìm kiếm. Kẻ tấn công tạo một đường dẫn chứa dữ liệu độc hại trong từ khóa và gửi cho nạn nhân. Website hiển thị dữ liệu này mà không mã hóa đầu ra, mã độc sẽ  được thực thi khi nạn nhân mở liên kết.

Dấu hiệu nhận biết:

  • URL chứa tham số có dữ liệu bất thường hoặc đoạn mã đáng ngờ.
  • Website hiển thị lại dữ liệu từ URL trên trang mà không xử lý an toàn.
  • Hành vi bất thường xuất hiện sau khi truy cập một liên kết cụ thể và thường không tiếp diễn khi mở trang bằng đường dẫn thông thường.

DOM-based XSS (XSS dựa trên cấu trúc DOM)

DOM-based XSS xảy ra khi JavaScript phía trình duyệt lấy dữ liệu từ nguồn không đáng tin cậy, chẳng hạn URL, rồi đưa dữ liệu vào trang web mà không xử lý an toàn. Lỗ hổng này phát sinh hoàn toàn ở phía trình duyệt mà không cần máy chủ phản hồi lại đoạn mã độc.

Ví dụ: Một website sử dụng JavaScript để lấy nội dung từ tham số URL và hiển thị lên trang bằng innerHTML. Nếu dữ liệu không được xử lý an toàn, kẻ tấn công sẽ tạo một đường dẫn khiến trình duyệt diễn giải dữ liệu đó thành mã HTML hoặc JavaScript độc hại.

Dấu hiệu nhận biết:

  • Nội dung hoặc hành vi trên trang thay đổi bất thường khi URL có tham số đặc biệt.
  • Trang phát sinh hành vi bất thường do JavaScript xử lý dữ liệu từ URL.
  • Kiểm tra mã nguồn phía trình duyệt phát hiện dữ liệu không đáng tin cậy được đưa vào DOM thông qua các phương thức không an toàn.

tấn công xss là gì

>>> Xem thêm: HTTP Flood là gì? Cách giảm thiểu tấn công website

Nguyên nhân khiến website tồn tại lỗ hổng XSS là gì?

Nguyên nhân gốc rễ khiến website tồn tại lỗ hổng Cross-Site Scripting là do hệ thống tin tưởng tuyệt đối vào dữ liệu từ phía người dùng nhập vào mà không có sự kiểm soát, lọc hoặc mã hóa an toàn trước khi hiển thị lại lên trình duyệt.

Không kiểm tra và lọc dữ liệu đầu vào 

Nhiều hệ thống chấp nhận mọi loại dữ liệu từ người dùng gửi lên qua các form đăng ký, bình luận hoặc thanh tìm kiếm mà không hề kiểm tra. Việc thiếu các quy tắc ràng buộc (ví dụ: chỉ cho phép nhập chữ và số, kiểm tra định dạng email, loại bỏ các thẻ HTML nguy hiểm) tạo điều kiện thuận lợi cho kẻ tấn công dễ dàng chèn các đoạn script độc hại ngay từ bước gửi yêu cầu.

Không mã hóa dữ liệu đầu ra (Output Encoding)

Đây là nguyên nhân phổ biến nhất khiến website bị tấn công XSS. Khi lập trình viên lấy dữ liệu do người dùng nhập vào (hoặc dữ liệu từ cơ sở dữ liệu) và hiển thị trực tiếp lên giao diện HTML mà không qua bộ lọc mã hóa, trình duyệt sẽ hiểu nhầm các ký tự đặc biệt như <, >, ", ' là các thẻ lệnh lập trình và tự động thực thi chúng dưới dạng mã độc JavaScript. 

Sử dụng các hàm JavaScript thiếu an toàn trong cấu trúc DOM

Trong quá trình phát triển ứng dụng Single Page hoặc xử lý giao diện phía Client-side, lập trình viên thường sử dụng các hàm có tính chất ghi trực tiếp dữ liệu vào cấu trúc trang như element.innerHTML, document.write(), hoặc các hàm thực thi chuỗi như eval(), setTimeout(). Nếu dữ liệu đưa vào các hàm này được lấy trực tiếp từ URL (location.search, location.hash) mà không qua xử lý, lỗ hổng DOM-based XSS sẽ xuất hiện. 

Không thiết lập chính sách bảo mật nội dung (CPS)

CSP là một lớp bảo mật bổ sung giúp trình duyệt nhận biết và hạn chế các nguồn tài nguyên (như JavaScript, CSS, Hình ảnh) được phép thực thi trên trang web. Nếu một website không cấu hình tiêu đề Content-Security-Policy hoặc cấu hình quá lỏng lẻo (ví dụ: cho phép chạy unsafe-inline), trình duyệt sẽ không thể ngăn chặn các đoạn mã script lạ được chèn từ bên ngoài, làm tăng cấu trúc rủi ro khi bị khai thác XSS.

Mặc dù bản chất cờ HttpOnly không ngăn chặn được lỗ hổng XSS xảy ra, nhưng việc thiếu vắng cấu hình này lại là nguyên nhân khiến XSS attack trở nên nghiêm trọng. Nếu không bật HttpOnly, các đoạn mã JavaScript độc hại khi bị kích hoạt sẽ dễ dàng tiếp cận và đánh cắp token, session của người dùng thông qua lệnh document.cookie, dẫn đến việc kẻ tấn công chiếm quyền điều khiển tài khoản một cách dễ dàng.

xss là gì

Cách phòng chống tấn công XSS hiệu quả 

Để phòng chống tấn công Cross-Site Scripting hiệu quả, website cần áp dụng chiến lược bảo vệ nhiều lớp, kết hợp xử lý dữ liệu an toàn trong mã nguồn, thiết lập cơ chế bảo mật trên trình duyệt và tăng cường bảo vệ ở tầng hạ tầng. Không có biện pháp đơn lẻ nào có thể loại bỏ hoàn toàn nguy cơ XSS attack.

Kiểm soát dữ liệu đầu vào và đầu ra

Đây là lớp bảo vệ quan trọng nhất, giúp ngăn trình duyệt hiểu nhầm dữ liệu do người dùng cung cấp thành mã có thể thực thi.

  • Kiểm tra dữ liệu đầu vào: Xác thực dữ liệu theo yêu cầu của từng trường, chẳng hạn giới hạn độ dài, định dạng email hoặc kiểu dữ liệu được phép. Nên ưu tiên danh sách cho phép thay vì chỉ tìm và loại bỏ một số ký tự đáng ngờ.
  • Mã hóa dữ liệu đầu ra: Chuyển đổi các ký tự đặc biệt thành dạng an toàn phù hợp với ngữ cảnh hiển thị, chẳng hạn nội dung HTML hoặc thuộc tính HTML. Nhờ đó, trình duyệt hiển thị dữ liệu như văn bản thay vì diễn giải thành mã.
  • Làm sạch HTML: Với website cho phép người dùng đăng bình luận hoặc nội dung có định dạng, hãy sử dụng thư viện chuyên dụng như DOMPurify để loại bỏ các thành phần nguy hiểm trước khi hiển thị.

Thiết lập các cơ chế bảo mật trên trình duyệt

Các cơ chế bảo mật của trình duyệt giúp hạn chế khả năng thực thi mã độc và giảm thiểu thiệt hại nếu website phát sinh lỗ hổng XSS.

  • Triển khai Content Security Policy: Cấu hình chính sách bảo mật thông qua HTTP header để kiểm soát nguồn tải và thực thi JavaScript. CSP được thiết lập chặt chẽ có thể hạn chế việc thực thi script trái phép, nhưng cần cấu hình và kiểm thử phù hợp.
  • Thiết lập thuộc tính HttpOnly cho cookie: Với cookie chứa thông tin phiên đăng nhập, thuộc tính HttpOnly ngăn JavaScript đọc trực tiếp giá trị cookie. Cơ chế này giúp giảm nguy cơ đánh cắp cookie qua XSS, nhưng không ngăn mã độc thực hiện mọi hành động dưới phiên đăng nhập của nạn nhân.
  • Sử dụng Subresource Integrity: Khi tải thư viện JavaScript từ CDN có hỗ trợ SRI, hãy sử dụng thuộc tính integrity để trình duyệt kiểm tra nội dung tệp có khớp với mã băm đã khai báo hay không, qua đó phát hiện việc tệp bị thay đổi ngoài dự kiến.

cross site scripting

Kiểm tra và rà soát bảo mật định kỳ

Lỗ hổng XSS có thể phát sinh khi website cập nhật mã nguồn, cài đặt plugin hoặc bổ sung chức năng mới. Vì vậy, kiểm thử bảo mật định kỳ là bước cần thiết để phát hiện và xử lý rủi ro kịp thời.

  • Quét lỗ hổng tự động: Sử dụng công cụ như OWASP ZAP hoặc Burp Suite để hỗ trợ phát hiện các điểm yếu bảo mật.
  • Rà soát mã nguồn: Kiểm tra những vị trí tiếp nhận dữ liệu người dùng, cách mã hóa đầu ra và các thao tác JavaScript có nguy cơ không an toàn.
  • Kiểm thử sau khi khắc phục: Xác minh lỗ hổng đã được xử lý và không phát sinh lỗi tương tự ở các chức năng liên quan.
  • Cập nhật phần mềm: Duy trì phiên bản được hỗ trợ của framework, thư viện và các thành phần website để giảm nguy cơ từ những lỗ hổng đã được công bố.

Tăng cường bảo vệ website bằng WAF

Tường lửa ứng dụng web (Web Application Firewall – WAF) giúp giám sát và lọc các yêu cầu HTTP/HTTPS dựa trên những quy tắc bảo mật, bao gồm các dấu hiệu thường gặp của XSS attack.

  • Phát hiện và lọc yêu cầu độc hại: WAF có thể nhận diện, chặn những yêu cầu chứa dữ liệu có dấu hiệu tấn công trước khi chúng đến ứng dụng.
  • Giảm nguy cơ khai thác lỗ hổng: Các quy tắc bảo vệ phù hợp có thể bổ sung một lớp phòng vệ cho những điểm tiếp nhận dữ liệu như biểu mẫu, tham số URL và chức năng bình luận.
  • Kết hợp với bảo mật mã nguồn: WAF không thể bảo đảm chặn mọi biến thể XSS, đặc biệt khi lỗ hổng xuất phát từ logic xử lý dữ liệu phía trình duyệt. Vì vậy, cần kết hợp WAF với việc rà soát và sửa lỗi trong ứng dụng.

Tham khảo ngay Nhân Hòa WAF – bảo vệ website 24/7 để tăng cường khả năng lọc lưu lượng độc hại và hỗ trợ bảo vệ website trước các nguy cơ tấn công từ bên ngoài.

>>> Đăng ký dùng thử miễn phí tại đây!

Phân biệt tấn công SQL Injection và XSS

SQL Injection và XSS attack là hai lỗ hổng bảo mật phổ biến trên ứng dụng web, nhưng chúng khác nhau về mục tiêu tấn công, vị trí thực thi mã và cơ chế hoạt động. 

Tiêu chí

Cross-Site Scripting

SQL Injection

Mục tiêu tấn công

Trình duyệt của người dùng khác đang truy cập website.

Cơ sở dữ liệu ở phía máy chủ.

Ngôn ngữ thực thi

Thường là JavaScript (hoặc HTML/CSS).

Ngôn ngữ truy vấn cơ sở dữ liệu SQL.

Nơi mã độc chạy

Chạy trực tiếp trên trình duyệt của nạn nhân.

Chạy trực tiếp trên máy chủ cơ sở dữ liệu.

Mục đích của Hacker

Đánh cắp cookie/phiên đăng nhập (Session ID), giả mạo người dùng, thay đổi giao diện hoặc điều hướng trang.

Đọc trộm, sửa đổi hoặc xóa dữ liệu nhạy cảm (mật khẩu, thông tin khách hàng), vượt qua xác thực.

Các dạng phổ biến

Stored XSS, Reflected XSS, DOM-based XSS.

In-band SQLi, Blind SQLi, Out-of-band SQLi.

Cách phòng chống

Mã hóa đầu ra theo đúng ngữ cảnh, kiểm tra dữ liệu đầu vào.

Sử dụng truy vấn tham số hóa và phân quyền cơ sở dữ liệu.

>>> Xem thêm: Tấn công SQL Injection là gì? Nguyên nhân, tác hại và cách phòng chống

[FAQs] Câu hỏi thường gặp về Cross-Site Scripting

Tại sao viết tắt Cross-Site Scripting là XSS chứ không phải CSS?

Thuật ngữ XSS được viết tắt như vậy để tránh trùng tên với CSS (Cascading Style Sheets - ngôn ngữ định dạng giao diện web) vốn đã rất phổ biến lúc bấy giờ. Chữ X đại diện cho từ "Cross".

XSS attack có ảnh hưởng đến SEO không?

Có thể. Nếu lỗ hổng bị khai thác để chèn nội dung spam, chuyển hướng người dùng hoặc làm giảm độ an toàn của website, uy tín và hiệu quả SEO có thể bị ảnh hưởng.

Cross-Site Scripting có thể xảy ra ở những vị trí nào trên website?

XSS thường xuất hiện tại các vị trí nhận hoặc hiển thị dữ liệu người dùng như ô tìm kiếm, biểu mẫu bình luận, URL và nội dung được tải động bằng JavaScript.

Lời kết

XSS attack có thể gây ra nhiều rủi ro cho dữ liệu và hoạt động của website nếu không được xử lý kịp thời. Doanh nghiệp nên kết hợp kiểm soát dữ liệu, rà soát bảo mật định kỳ và sử dụng WAF như một lớp phòng vệ bổ sung để giảm thiểu nguy cơ bị khai thác. 

Thu hút khách hàng mới và xây dựng thương hiệu uy tín

Giải pháp thiết kế website trọn gói giúp doanh nghiệp hiện diện chuyên nghiệp và phát triển kinh doanh trực tuyến dễ dàng hơn

Tặng tên miền .COM/.NET và SSL Miễn phí 1 năm tên miền .COM hoặc .NET và chứng chỉ SSL khi đăng ký gói thiết kế website trọn gói.
25+ năm kinh nghiệm Thành lập từ năm 2000, chúng tôi là một trong những đơn vị tiên phong trong lĩnh vực thiết kế & hosting tại Việt Nam.
400+ giao diện chuyên nghiệp Thư viện hơn 400 template chuẩn SEO, responsive, đa ngành nghề — tự do tuỳ chỉnh màu sắc, font và nội dung. Xem thêm >>
100.000+ khách hàng sử dụng Hơn 60.000 doanh nghiệp vừa và nhỏ, cá nhân kinh doanh trên cả nước đang tin dùng dịch vụ của chúng tôi.

Giá chỉ từ

129.000đ /tháng
Thiết kế website ngay!
Nhân viên hỗ trợ và linh vật AI

Đặng Văn Trường
Giám đốc Web4s
Kết nối với tôi:

14 năm kinh nghiệm trong phát triển phần mềm và tư vấn công nghệ. Chuyên phân tích hệ thống, tích hợp AI/ML, automation, full-stack development, với thế mạnh xây dựng giải pháp công nghệ tối ưu cho bài toán doanh nghiệp.

Bài viết liên quan
24/10/2026
SQL Injection là gì? Đây là kỹ thuật tấn công khai thác lỗ hổng truy vấn SQL để truy cập, sửa đổi hoặc xóa dữ liệu...
21/10/2026
Information Architecture giúp doanh nghiệp tổ chức nội dung, phân cấp danh mục và kết nối các trang trong website logic hơn. Vậy...
20/10/2026
Responsive Image là kỹ thuật quan trọng giúp tối ưu tốc độ và giao diện website trên mọi thiết bị. Hãy cùng khám phá các...
Kết nối với Nhân Hoà
Công Ty TNHH Phần Mềm Nhân Hòa

Map Tầng 4, Tòa 97–99 Láng Hạ, Phường Đống Đa, Thành phố Hà Nội

Phone Điện thoại: 1900 6680 - (024) 7308 6680

Mail Mail: sales@nhanhoa.com

Hotline Phản ánh chất lượng dịch vụ: 091 140 8966

Công Ty TNHH Phần Mềm Nhân Hòa

Map 927/1 Cách Mạng Tháng 8, Phường Tân Sơn Nhất, Thành phố Hồ Chí Minh

Phone Điện thoại: 1900 6680 - (028) 7308 6680

Mail Mail: hcmsales@nhanhoa.com

Hotline Phản ánh chất lượng dịch vụ: 091 140 8966

Công Ty TNHH Phần Mềm Nhân Hòa

Map Tầng 2 Tòa nhà Sài Gòn Sky, ngõ 26 Nguyễn Thái Học, phường Thành Vinh, Nghệ An

Phone Điện thoại: 1900 6680 - (024) 7308 6680 - nhánh 6

Mail Mail: contact@nhanhoa.com

Hotline Phản ánh chất lượng dịch vụ: 091 140 8966

Kết nối với Nhân Hoà
Gọi lại cho tôi
×
Thông báo

Đăng nhập thành công!