XSS là gì? Cách thức hoạt động và phòng tránh tấn công XSS

Cross-Site Scripting (XSS) từ lâu đã nằm trong nhóm những lỗ hổng bảo mật nguy hiểm nhất và liên tục góp mặt trong báo cáo OWASP Top 10 (Bảng xếp hạng các mối đe dọa phổ biến nhất trên ứng dụng web). Theo thống kê từ nền tảng HackerOne, XSS chiếm khoảng 25% tổng số lỗ hổng bảo mật được báo cáo hàng năm cho thấy mức độ phổ biến và nguy hiểm của nó trong thế giới số.

Không chỉ dừng lại ở việc đánh cắp thông tin người dùng như cookie, dữ liệu đăng nhập hay lịch sử truy cập, các cuộc tấn công XSS còn có thể dẫn đến mất quyền kiểm soát tài khoản ngân hàng, rò rỉ dữ liệu cá nhân quy mô lớn và ảnh hưởng nghiêm trọng đến uy tín của các doanh nghiệp. Đặc biệt, trong bối cảnh các ứng dụng web hiện đại ngày càng phụ thuộc vào JavaScript và các framework phía client như React, Angular hay Vue.js, các kỹ thuật XSS cũng trở nên tinh vi và khó phát hiện hơn bao giờ hết. Bài viết này sẽ giúp bạn hiểu rõ XSS là gì, cách thức hoạt động của từng loại tấn công và quan trọng nhất là các biện pháp phòng chống hiệu quả để bảo vệ hệ thống của mình trước mối nguy này.
 

XSS là gì? Cách thức hoạt động và phòng tránh tấn công XSS
 

XSS là gì?

XSS (Cross Site Scripting) là một trong những lỗ hổng bảo mật nghiêm trọng và phổ biến nhất trên các ứng dụng web hiện nay. Bản chất của lỗ hổng này nằm ở việc cho phép kẻ tấn công có thể chèn và thực thi mã JavaScript hoặc HTML độc hại vào các trang web mà người dùng khác sẽ truy cập. Khi người dùng hợp pháp tải trang web chứa mã độc này, trình duyệt của họ sẽ tự động thực thi mã đó mà không hề hay biết, dẫn đến những hậu quả không mong muốn.

Điểm nguy hiểm của XSS là nó khai thác sự tin tưởng mà người dùng dành cho một trang web. Thay vì tấn công trực tiếp vào hệ thống server, kẻ tấn công lợi dụng chính trang web đó để "đầu độc" trình duyệt của người dùng. Điều này làm cho việc phát hiện và ngăn chặn trở nên khó khăn hơn vì về mặt kỹ thuật, mã độc đang chạy trên một trang web "hợp pháp" mà người dùng tin tưởng.

XSS là gì?

Cách thức hoạt động của XSS attack

Cơ chế hoạt động của XSS dựa trên một nguyên tắc cơ bản nhưng hiệu quả: khai thác sự thiếu kiểm soát trong việc xử lý dữ liệu đầu vào từ người dùng. Quá trình tấn công thường bắt đầu bằng việc kẻ tấn công thăm dò và tìm kiếm các điểm yếu trên website. Họ sẽ thử nghiệm các trường nhập liệu khác nhau từ các form đăng ký, đăng nhập, cho đến các hộp tìm kiếm và khu vực bình luận. Mục tiêu là xác định những nơi mà dữ liệu đầu vào không được kiểm tra hoặc được kiểm tra không đầy đủ. Khi tìm thấy một điểm yếu, kẻ tấn công sẽ chế tạo các payload độc hại được thiết kế để vượt qua các biện pháp bảo mật còn sót lại.

Sau khi payload được chèn thành công, giai đoạn thực thi bắt đầu. Tùy thuộc vào loại XSS, mã độc có thể được thực thi ngay lập tức khi nạn nhân truy cập một URL cụ thể, hoặc được kích hoạt mỗi khi họ tải một trang web nhất định. Khi mã JavaScript độc hại chạy trên trình duyệt của nạn nhân, nó có thể thực hiện nhiều hành động nguy hiểm như đọc và gửi cookies, thực hiện các request HTTP thay mặt người dùng hoặc thao tác nội dung trang web để lừa đảo.
 

Tấn công XSS
 

Các loại tấn công XSS phổ biến

Tấn công XSS không chỉ có một hình thức duy nhất mà tồn tại dưới nhiều biến thể khác nhau tùy theo cách thức khai thác và vị trí thực thi mã độc. Tấn công XSS không chỉ có một hình thức duy nhất mà tồn tại dưới nhiều biến thể khác nhau tùy theo cách thức khai thác và vị trí thực thi mã độc.

 1. Stored XSS (XSS lưu trữ)

Đây là kiểu tấn công XSS nguy hiểm nhất vì mã độc được lưu trữ trực tiếp trên máy chủ - thường là trong cơ sở dữ liệu, hệ thống bình luận, tin nhắn hoặc bất kỳ nơi nào người dùng có thể gửi nội dung trên web. Khi người dùng truy cập trang có chứa nội dung bị chèn mã, trình duyệt sẽ tự động thực thi đoạn mã độc đó. 

Ví dụ: Một kẻ tấn công có thể để lại bình luận chứa JavaScript nguy hiểm trên một diễn đàn và bất kỳ ai đọc bình luận đó đều bị ảnh hưởng mà không cần nhấp chuột hay thao tác gì thêm.

Tác động của XSS Stored Attack có thể lan rộng và kéo dài. Không giống như các dạng XSS khác chỉ ảnh hưởng đến một số lượng nhỏ nạn nhân, XSS Stored Attack có thể ảnh hưởng đến hàng trăm, thậm chí hàng nghìn người dùng trong thời gian dài. Mỗi lần họ truy cập vào trang web chứa dữ liệu độc hại, thông tin nhạy cảm của họ có thể bị đánh cắp, tài khoản có thể bị chiếm quyền, hoặc họ có thể bị chuyển hướng đến các trang web lừa đảo.

 2. Reflected XSS (XSS phản chiếu)

Với kiểu tấn công này, mã độc không được lưu lại trên server mà được chèn trực tiếp vào URL hoặc các tham số của request. Trang web sau đó “phản chiếu” lại đoạn mã đó trong nội dung phản hồi mà không xử lý an toàn. Kiểu tấn công này thường xuất hiện trong các liên kết giả mạo được gửi qua email, tin nhắn hoặc các nền tảng khác. Khi nạn nhân click vào link chứa mã độc, trang web phản hồi và ngay lập tức thực thi đoạn script đó trên trình duyệt người dùng. Nguy hiểm ở chỗ: tất cả xảy ra rất nhanh và nạn nhân không hề hay biết.

3. DOM-based XSS

Khác với hai loại trên, DOM-based XSS không tương tác với máy chủ. Thay vào đó, nó khai thác các thao tác JavaScript trên trình duyệt, cụ thể là cách trang web xử lý dữ liệu từ URL, fragment hoặc localStorage... Nếu trang web lấy dữ liệu từ đó và gán trực tiếp vào HTML mà không kiểm tra kỹ, kẻ tấn công có thể chèn mã độc để thao túng DOM. Điều này khiến trình duyệt thực thi đoạn mã ngay trên máy của người dùng, hoàn toàn không có sự can thiệp từ phía server nên rất khó phát hiện nếu không kiểm tra kỹ phần frontend.
 

XSS attack
 

Tác hại của các cuộc tấn công XSS

Bạn có thể nghĩ rằng một đoạn mã JavaScript nho nhỏ không thể gây hại gì to tát. Nhưng thật ra, nếu bị khai thác đúng lúc và đúng cách, một cuộc tấn công XSS có thể làm rối loạn toàn bộ hệ thống website, đánh cắp thông tin người dùng và thậm chí ảnh hưởng nghiêm trọng đến uy tín thương hiệu. Hãy điểm qua những hậu quả nguy hiểm mà tấn công Cross Site Scripting có thể gây ra để hiểu vì sao đây luôn là một trong những mối đe dọa hàng đầu trong bảo mật web.

1. Đánh cắp Cookie/Session

Kẻ tấn công có thể chèn mã JavaScript nhằm trích xuất cookie phiên làm việc của người dùng. Những cookie này thường chứa mã định danh phiên (session ID). Một khi kẻ tấn công có được thông tin này, họ có thể giả mạo danh tính, truy cập vào tài khoản của người dùng mà không cần mật khẩu. Đây là một trong những hậu quả nghiêm trọng nhất vì nó liên quan trực tiếp đến chiếm quyền truy cập.

2. Thao túng dữ liệu người dùng

Thông qua XSS, kẻ tấn công có thể thay đổi giao diện hiển thị, sửa nội dung trang web theo ý mình. Ví dụ, chúng có thể chèn biểu mẫu giả mạo (phishing form) vào giao diện thật để đánh lừa người dùng điền thông tin như số thẻ tín dụng, tài khoản ngân hàng hoặc thông tin cá nhân. 

Ngoài ra, XSS attack còn có thể thao túng hành vi trình duyệt như tự động gửi form, đổi nội dung tin nhắn hoặc làm người dùng nghĩ rằng họ đang tương tác với một phần hợp lệ của website.

3. Lan truyền mã độc

Kẻ tấn công có thể dùng XSS để phát tán phần mềm độc hại đến người dùng cuối. Khi đoạn script độc được thực thi, nó có thể tự động chuyển hướng đến một website độc hại, tải về file virus/trojan hoặc thậm chí là ép buộc người dùng tải về các tiện ích mở rộng trình duyệt nguy hiểm. Điều này đặc biệt nguy hiểm với các hệ thống không có phần mềm bảo mật cập nhật.

4. Lấy thông tin nhạy cảm

XSS còn cho phép kẻ tấn công trích xuất dữ liệu nhạy cảm từ người dùng, bao gồm: nội dung email, tin nhắn cá nhân, thông tin tài khoản nội bộ, số thẻ tín dụng,… nếu các dữ liệu này được hiển thị trên trình duyệt. Chúng có thể ghi lại mọi thao tác bàn phím hoặc gửi thông tin đầu vào của người dùng đến server của hacker thông qua các request ẩn.

5. Tấn công CSRF

XSS có thể được sử dụng như một bước đệm để thực hiện CSRF (Cross-Site Request Forgery). Khi người dùng đã đăng nhập vào hệ thống, kẻ tấn công dùng XSS để buộc trình duyệt gửi các yêu cầu nguy hiểm (chuyển tiền, thay đổi mật khẩu…) thay mặt người dùng mà họ không hề hay biết. Đây là một kiểu tấn công chuỗi, rất khó phát hiện nếu hệ thống không có cơ chế xác thực chéo hoặc token bảo vệ.

6. Phá hoại uy tín và lòng tin từ người dùng

Một cuộc tấn công XSS thành công có thể khiến người dùng mất niềm tin vào nền tảng. Họ có thể gặp những nội dung lạ, biểu mẫu giả hay bị chuyển hướng đến trang lừa đảo. Điều này ảnh hưởng nghiêm trọng đến thương hiệu, uy tín và trải nghiệm khách hàng, đặc biệt với các website thương mại điện tử, ngân hàng hoặc dịch vụ công trực tuyến.
 

Cuộc tấn công XSS
 

Hướng dẫn phòng tránh tấn công XSS 

Để bảo vệ ứng dụng web khỏi tấn công XSS, bạn cần kết hợp nhiều lớp bảo vệ từ lọc đầu vào, mã hóa đầu ra cho tới chính sách bảo mật trình duyệt (CSP) và cập nhật phần mềm thường xuyên. 

1. Kiểm tra và lọc đầu vào (Input validation)

Đây là lớp phòng thủ đầu tiên và cực kỳ quan trọng. Mọi dữ liệu từ người dùng đều phải được xem là không tin cậy cho đến khi được xác thực và làm sạch.

- Ưu tiên whitelist thay vì blacklist: Thay vì cố gắng loại trừ các ký tự nguy hiểm (blacklist), bạn hãy thiết lập danh sách các ký tự hoặc định dạng được cho phép (whitelist). Ví dụ, trường nhập số điện thoại chỉ nên chấp nhận chữ số và ký tự ‘+’, trong khi trường email phải tuân theo định dạng hợp lệ. Cách làm này giúp loại bỏ được hầu hết các payload XSS một cách triệt để.

- Dùng thư viện chuyên dụng: Sử dụng các thư viện hoặc hàm built‑in của framework để validate (ví dụ: express-validator cho Node.js, Validator trong Laravel).

- Kiểm tra cả client và server: Mặc dù việc kiểm tra dữ liệu ở phía client giúp cải thiện trải nghiệm người dùng (ví dụ: báo lỗi ngay khi nhập sai) nhưng điều này không đủ để bảo vệ hệ thống. Do đó, luôn luôn phải thực hiện kiểm tra nghiêm ngặt ở phía server, nơi dữ liệu thực sự được xử lý và lưu trữ, bởi kẻ tấn công có thể dễ dàng bypass kiểm tra phía client bằng cách gửi request thủ công hoặc chỉnh sửa script.

2. Mã hóa đầu ra (Output encoding)

Ngay cả khi dữ liệu đầu vào đã được lọc, bạn vẫn cần đảm bảo dữ liệu đó không bị trình duyệt diễn giải sai. Bạn phải mã hóa đầu ra trước khi hiển thị lại trên trang. 

- Ngăn trình duyệt hiểu sai nội dung: Nếu dữ liệu người dùng chứa các ký tự đặc biệt như <, >, ", ',… và bạn hiển thị chúng trực tiếp mà không mã hóa, trình duyệt có thể hiểu nhầm và thực thi chúng như một phần của HTML hoặc JavaScript. Ví dụ, một đoạn như < script >alert('xss') có thể gây ra hậu quả nghiêm trọng nếu không được mã hóa đúng.

- Escape phù hợp theo ngữ cảnh: Tùy vào vị trí hiển thị dữ liệu, bạn cần sử dụng phương pháp mã hóa phù hợp:

Trong HTML body: Escape các ký tự <, >, &, ", '.

Trong HTML attribute: Escape thêm các ký tự như " hoặc '.

Trong URL: Dùng encodeURIComponent để đảm bảo URL an toàn.

Trong JavaScript hoặc JSON: Escape chuỗi theo cú pháp phù hợp để không phá vỡ script.

- Sử dụng hàm/thuật toán của framework: Hầu hết các framework hiện đại đều hỗ trợ các hàm encoding như e() trong Laravel, h() trong Ruby on Rails hay escapeHTML() trong các thư viện JavaScript.
 

Phòng tránh tấn công XSS
 

3. Sử dụng content security policy (CSP)

Content Security Policy là một cơ chế bảo mật mạnh mẽ giúp hạn chế các loại nội dung có thể được trình duyệt tải và thực thi từ ứng dụng của bạn.

- Chỉ cho phép tải tài nguyên từ nguồn tin cậy: Bạn có thể cấu hình header CSP để chỉ cho phép tải script, style hay hình ảnh từ đúng những nguồn tin cậy mà bạn chỉ định ví dụ chỉ từ chính domain của bạn và vài CDN uy tín.

- Chặn hoàn toàn inline script và eval(): CSP cho phép bạn cấm sử dụng inline script () và các hàm nguy hiểm như eval(), những công cụ thường được kẻ tấn công XSS lợi dụng.
 

Phòng tấn công XSS
 

4. Gắn HTTPOnly flag cho Cookie

Một trong những biện pháp bảo vệ hiệu quả chống lại tấn công XSS là đánh dấu các cookie quan trọng, đặc biệt là cookie chứa session ID bằng cờ HttpOnly. Khi một cookie được gắn cờ này, nó sẽ không thể bị truy cập hoặc đọc bởi bất kỳ đoạn mã JavaScript nào trên trang web, kể cả mã độc do kẻ tấn công chèn vào thông qua lỗ hổng XSS.

Ngoài ra, nên kết hợp HTTPOnly với các biện pháp bảo vệ bổ sung như:

- Secure: Chỉ truyền cookie qua giao thức HTTPS giúp ngăn chặn việc đánh cắp cookie qua kết nối không an toàn.

- SameSite: Thiết lập giá trị SameSite=Lax hoặc SameSite=Strict để hạn chế cookie được gửi trong các yêu cầu giữa các trang web (cross-site requests), từ đó giảm thiểu rủi ro tấn công CSRF (Cross-Site Request Forgery).

Việc cấu hình đúng các cờ bảo mật này giúp tăng cường đáng kể khả năng bảo vệ cho ứng dụng web khỏi các cuộc tấn công phổ biến.

5. Sử dụng WAF (Web Application Firewall)

Web Application Firewall (WAF) là một lớp bảo vệ trung gian giữa người dùng và máy chủ web. Nó giúp phát hiện và ngăn chặn các yêu cầu độc hại trước khi chúng tiếp cận ứng dụng. Đối với các lỗ hổng như XSS, SQL Injection hay CSRF, WAF có thể đóng vai trò là tuyến phòng thủ đầu tiên nhờ vào các bộ quy tắc lọc linh hoạt và khả năng phân tích hành vi truy cập.

Một số WAF phổ biến như Cloudflare WAF, AWS WAF, ModSecurity,… cung cấp các tính năng như:

- Tự động cập nhật các quy tắc bảo mật dựa trên các mối đe dọa mới nhất.

- Ghi nhận và cảnh báo các hành vi truy cập bất thường.

- Cho phép cấu hình tùy chỉnh phù hợp với ứng dụng cụ thể.

Tích hợp WAF không chỉ hỗ trợ ngăn ngừa XSS mà còn nâng cao toàn diện khả năng phòng vệ của hệ thống.
 

Tránh tấn công XSS
 

6. Cập nhật thư viện/framework

Sử dụng các thư viện và framework hiện đại giúp tăng tốc quá trình phát triển ứng dụng, nhưng đồng thời cũng tiềm ẩn rủi ro nếu các thành phần này tồn tại lỗ hổng bảo mật. Để giảm thiểu nguy cơ bị khai thác thông qua lỗ hổng XSS (hoặc các loại lỗ hổng khác), cần thực hiện các biện pháp sau:

- Theo dõi CVE (Common Vulnerabilities and Exposures): Đăng ký nhận thông báo từ các nền tảng như GitHub Security Alerts, NVD (National Vulnerability Database) hoặc các diễn đàn bảo mật để nắm bắt nhanh các lỗ hổng mới phát sinh trong các thư viện đang sử dụng.

- Phiên bản ổn định: Luôn ưu tiên các phiên bản chính thức, được cộng đồng lập trình viên hỗ trợ và cập nhật thường xuyên. Đồng thời, bạn hãy sử dụng công cụ quản lý phụ thuộc như npm (Node.js), Composer (PHP), Maven (Java),… để dễ kiểm soát và cập nhật. 

- Kiểm thử định kỳ: Tích hợp các công cụ tự động quét lỗ hổng vào quy trình CI/CD như Snyk, Dependabot hoặc OWASP Dependency-Check. Các công cụ này sẽ kiểm tra và đưa ra cảnh báo nếu phát hiện thư viện có lỗ hổng, giúp đội ngũ phát triển dễ dàng thực hiện cập nhật hoặc thay thế kịp thời.
 

XSS attacks
 

Một số vụ tấn công XSS nổi bật trong lịch sử

Dưới đây là những ví dụ tiêu biểu cho thấy mức độ nguy hiểm của XSS Attacks từ đánh cắp dữ liệu, chiếm đoạt tài khoản đến gây gián đoạn dịch vụ và thiệt hại kinh tế cho cá nhân lẫn tổ chức. Những vụ việc này là lời nhắc rõ ràng rằng XSS không phải là lỗ hổng nhỏ và cần được chú trọng phòng ngừa nghiêm túc.

1. Vụ tấn công Delta Airlines bởi Sven Jaschan (2004)

Năm 2004, sinh viên đại học người Đức Sven Jaschan đã tạo ra sâu máy tính Sasser, một loại virus tự sao chép và lan truyền khai thác các lỗ hổng bảo mật trên hệ điều hành Microsoft Windows. Mặc dù Sasser không phải một vụ tấn công XSS trực tiếp nhưng nó là ví dụ cho việc khai thác mã độc trên nền tảng mạng. 

Vụ việc này đã làm tê liệt hệ thống IT của hãng hàng không Delta, khiến họ phải hủy nhiều chuyến bay xuyên Đại Tây Dương, gây thiệt hại ước tính lên đến 500 triệu đô la Mỹ. Đây là trường hợp điển hình cho thấy một lỗ hổng nhỏ có thể gây ra sự gián đoạn lớn trên diện rộng.

2. Vụ tấn công qua kỹ thuật Reflected XSS

Reflected XSS là một kỹ thuật tấn công được nhiều hacker sử dụng để chiếm đoạt phiên làm việc (session) của người dùng thông qua việc chèn mã script độc hại vào URL hoặc form nhập liệu trên website. Khi người dùng truy cập vào đường link có chứa mã độc, trình duyệt sẽ thực thi đoạn mã này, từ đó đánh cắp cookie phiên làm việc và cho phép hacker giả mạo làm người dùng hợp pháp nhằm truy cập dữ liệu nhạy cảm. Đây là một trong những XSS Stored Attack phổ biến nhất và nguy hiểm nhất vì có thể trực tiếp chiếm quyền điều khiển tài khoản người dùng trên website.

3. eBay - Lỗ hổng XSS cho phép lừa đảo người dùng

eBay từng nhiều lần dính phải các lỗ hổng XSS phản chiếu và lưu trữ, cho phép kẻ tấn công:

- Tạo các trang sản phẩm giả mạo với mã độc chèn vào hình ảnh hoặc mô tả sản phẩm.

- Lừa người dùng nhấp vào các đường link chuyển hướng ra trang giả mạo, từ đó thu thập thông tin thẻ tín dụng hoặc đăng nhập.

Vấn đề nghiêm trọng ở chỗ: eBay cho phép HTML tùy chỉnh trong bài đăng, dẫn đến nguy cơ rất cao nếu không mã hóa đầu ra đúng cách. Dù đã có cảnh báo, nhiều lỗ hổng XSS vẫn bị phát hiện nhiều năm sau đó.
 

Cross site scripting


Qua bài viết của Phương Nam Vina, XSS là một trong những hình thức tấn công phổ biến và nguy hiểm nhất trên môi trường web, có thể dẫn đến mất thông tin người dùng, chiếm quyền phiên làm việc hoặc thậm chí kiểm soát toàn bộ tài khoản. Điều đáng lo ngại là tấn công Cross Site Scripting thường không phụ thuộc vào lỗ hổng của trình duyệt mà xuất phát từ chính cách mà ứng dụng web xử lý dữ liệu đầu vào và đầu ra. An toàn ứng dụng web không phải là kết quả của một giải pháp đơn lẻ, mà là tổng hợp của quy trình bảo mật chặt chẽ và nhận thức đúng đắn về rủi ro tiềm ẩn. Chủ động phòng tránh XSS attacks cũng chính là nền tảng để xây dựng trải nghiệm an toàn cho người dùng và bảo vệ uy tín của hệ thống bạn đang phát triển.

Tham khảo thêm:

icon thiết kế website Ransomware là gì? Tất tần tật về mối đe dọa mã độc tống tiền

icon thiết kế website Trojan là gì? Dấu hiệu nhận biết và cách ngăn chặn virus Trojan

icon thiết kế website Sập web là gì? Nguyên nhân và cách khắc phục trang web bị sập

Bài viết mới nhất

Flush DNS là gì? Cách flush DNS trên Windows, macOS và Linux

Flush DNS là gì? Cách flush DNS trên Windows, macOS và Linux

DNS Flush Google giúp làm mới bộ nhớ đệm DNS, khắc phục nhanh lỗi mạng, tăng tốc độ truy cập trang web và đảm bảo kết nối Internet luôn ổn định.

 
Cấu trúc HTML cơ bản: Nền tảng đầu tiên để xây dựng website

Cấu trúc HTML cơ bản: Nền tảng đầu tiên để xây dựng website

Nắm vững cấu trúc HTML không chỉ giúp website đẹp, chuyên nghiệp mà còn nâng cao hiệu quả SEO, trải nghiệm người dùng và khả năng phát triển lâu dài.

Lỗi 413 request entity too large là gì? Nguyên nhân & cách xử lý

Lỗi 413 request entity too large là gì? Nguyên nhân & cách xử lý

Lỗi 413 request entity too large tuy khá phổ biến nhưng hoàn toàn có thể xử lý và phòng tránh nếu bạn nắm rõ nguyên nhân cũng như cách khắc phục.

Typography là gì? Nguyên tắc typography trong thiết kế website

Typography là gì? Nguyên tắc typography trong thiết kế website

Chỉ với vài thay đổi nhỏ về typography, website của bạn có thể trở nên hiện đại, dễ tiếp cận hoặc ngược lại, mất điểm ngay từ cái nhìn đầu tiên.

Khắc phục lỗi Sorry you are not allowed to access this page

Khắc phục lỗi Sorry you are not allowed to access this page

Lỗi Sorry you are not allowed to access this page thường xảy ra khi WordPress chặn bạn vì tài khoản không đủ quyền hoặc do website gặp lỗi cấu hình.

 
10 plugin popup WordPress tốt nhất giúp tăng chuyển đổi website

10 plugin popup WordPress tốt nhất giúp tăng chuyển đổi website

Muốn tăng khách hàng từ website? Tham khảo ngay top 10 plugin popup WordPress tốt nhất giúp website của bạn tối ưu marketing và bùng nổ chuyển đổi.

zalo