#

XSS là gì? Cách kiểm tra và ngăn chặn tấn công XSS hiệu quả

 30/06/2022 - 10:55 Trịnh Duy Thanh

Lỗi XSS là một kiểu lỗi tấn công vào ứng dụng phổ biến nhất hiện nay. Hậu quả của kiểu tấn công này rất nghiêm trọng và ảnh hưởng lớn đến thông tin người dùng. Bài viết sau đây sẽ giải thích chi tiết cho bạn về Cross-site scripting và các loại phổ biến hiện nay. Đồng thời, chúng tôi cũng đề cập đến một số phương pháp tìm kiếm và ngăn chặn Cross-site scripting nhanh chóng và chính xác nhất. Hãy cùng BKHOST tìm hiểu ngay thôi nào.

Cross-site scripting là gì?

Cross-site scripting - XSS la gi

Cross-site scripting – XSS là một kỹ thuật tấn công bảo mật các trang web nhằm mục đích xâm phạm vào phần chính sách nội dung với tư cách người dùng để truy cập và đánh cắp các dữ liệu quan trọng. Nếu kẻ tấn công lấy được các quyền truy cập riêng tư trong ứng dụng thì mọi chức năng và dữ liệu đều được khai thác toàn bộ.

Đăng ký dịch vụ Hosting tại BKHOST

BKHOST cung cấp dịch vụ Hosting với nhiều mức giá và cấu hình khác nhau, đáp ứng nhu cầu của tất cả khách hàng.

Cam kết hoàn tiền lên đến 100% nếu Quý khách không hài lòng với chất lượng sản phẩm, dịch vụ.

Rất nhiều chương trình khuyến mãi cực hấp dẫn đang chờ bạn. Đăng ký ngay hôm nay!

hosting website

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

XSS hoat dong nhu the nao

XSS tự động điều khiển một trang web bất kỳ để chạy mã JavaScript độc hại trong trình duyệt nhằm tấn công các hoạt động trong ứng dụng của người dùng.

Kiểm tra lỗi XSS

Các lỗ hổng XSS được tìm kiếm và phát hiện bằng cách sử dụng hàm alert() để chạy một số mã JavaScript bất kỳ trên trình duyệt.

Đối với trình duyệt Chrome.92 với iframe có khả năng ngăn chặn lệnh gọi alent() nên hàm print() sẽ là một lựa chọn phù hợp hơn.

Các loại XSS phổ biến

Có ba loại tấn công XSS chính:

  • Reflected XSS cung cấp các tập lệnh độc hại từ yêu cầu HTTP hiện tại.
  • Stored XSS là nơi lưu trữ các tập lệnh độc hại từ cơ sở dữ liệu trang web.
  • DOM-based XSS có các lỗ hổng bảo mật tồn tại trong mã máy khách.

Reflected XSS

Reflected XSS là một lỗ hổng bảo mật cơ bản bao gồm các tập lệnh đa trang web xảy ra khi ứng dụng nhận dữ liệu yêu cầu HTTP bất kỳ và phản hồi lại theo cách không an toàn.

Ví dụ:

Một lỗ hổng Reflected XSS:

https://insecure-website.com/status?message=All+is+well.
<p>Status: All is well.</p>

Nếu ứng dụng không có bất cứ dấu hiệu thực hiện xử lý dữ liệu nào thì quá trình tấn công sẽ tiếp tục:
https://insecure-website.com/status?message=<script>/*+Bad+stuff+here...+*/</script>
<p>Status: <script>/* Bad stuff here... */</script></p>

Lúc này khi người dùng truy cập vào URL độc hại đã được thiết lập thì các tập lệnh tấn công sẽ bắt đầu thực thi trong trình duyệt và thực hiện mọi hành động truy xuất dữ liệu quan trọng.

Stored XSS

Stored XSS xảy ra khi ứng dụng nhận các nguồn dữ liệu đáng ngờ và được phản hồi HTTP theo cách không an toàn.

Một số dữ liệu gửi đến ứng dụng thông qua HTTP như chức năng như comment trong blog, nicknames trong messenger hay các thông tin liên hệ khác…Hoặc dữ liệu từ các nguồn đáng ngờ như tin nhắn email trực tuyến qua SMTP, link tiếp thị hoặc các ứng dụng giám sát mạng.

Ví dụ:

Lỗ hổng Store XSS trên ứng dụng gửi tin nhắn:

<p>Hello, this is my message!</p>

Nếu ứng dụng không thực hiện xử lý dữ liệu thì kẻ tấn công sẽ tiến hành gửi thông báo đến người dùng khác:
<p><script>/* Bad stuff here... */</script></p>

DOM-based XSS

Các lỗ hổng XSS dựa trên nền tảng DOM để xâm nhập vào ứng dụng thông qua các mã JavaScript độc hại từ máy khách.

Ví dụ:

Ứng dụng sử dụng JavaScript để đọc các giá trị trong HTML:

var search = document.getElementById('search').value;
var results = document.getElementById('results');
results.innerHTML = 'You searched for: ' + search;

Kẻ tấn công kiểm soát các giá trị này để tạo ra các giá trị độc hại riêng:
You searched for: <img src=1 onerror='/* Bad stuff here... */'>

XSS được sử dụng để làm gì?

Kẻ tấn công sử dụng XSS với mục đích:

  • Mạo danh người dùng để tấn công các quyền truy cập có thể sử dụng.
  • Đọc dữ liệu truy cập sẵn có.
  • Đánh cắp thông tin đăng nhập của người dùng để thay đổi trang web.
  • Chèn chức năng trojan vào trang web.

Tác động của các lỗ hổng XSS

Mức độ tấn công XSS sẽ phụ thuộc vào các yếu tố của ứng dụng như chức năng, dữ liệu hoặc trạng thái như:

  • XSS trong Brochureware sẽ có mức độ tác động tối thiểu nhất bởi tính năng ẩn danh người dùng nhưng toàn bộ thông tin được hiển thị công khai.
  • XSS trong ứng dụng có dữ liệu quản trọng như giao dịch ngân hàng, email hoặc hồ sơ sẽ có mức độ tác động nghiêm trọng.
  • XSS trong ứng dụng có các đặc quyền nâng cao sẽ có mức độ tác động nghiêm trọng nhất bởi các thông tin và dữ liệu cá nhân sẽ dễ dàng bị đánh cắp.

Cách tìm và kiểm tra lỗ hổng XSS

Kiểm tra bằng công cụ

Công cụ trình quét lỗ hổng web của BurpSuite kết hợp phương pháp phân tích tĩnh và động của JavaScript giúp tự động hoá khả năng tìm kiếm các lỗ hổng XSS nhanh chóng và chính xác.

Kiểm tra thủ công

  • Sử dụng phương pháp kiểm tra thủ công để tìm kiếm các lỗ hổng Reflected XSSStored XSS bằng cách gửi đầu vào một chuỗi gồm chữ và số vào các mục nhập trong ứng dụng. Sau đó kiểm tra từng vị trí được gửi lại trong phản hồi HTTP để xác định đầu vào đó có thể được sử dụng để thực thi JavaScript tùy ý hay không. Bằng cách này, bạn có thể xác định được quy trình XSS xảy ra và chọn một trọng tải phù hợp để khai thác nó.
  • Kiểm tra DOM-based XSS thông qua các tham số URL bằng cách đặt một đầu vào tương ứng với một tham số và sử dụng công cụ dành cho nhà phát triển để tìm kiếm DOM của chúng. Sau đó hãy kiểm tra từng vị trí để xác định các đầu vào có thể khai thác hay không. Tuy nhiên, phương pháp này không thực sự khả thi đối với các loại lỗ hổng DOM XSS nâng cao khác.

 Chính sách bảo mật nội dung

CSP là chính sách bảo mật nội dung dành cho trình duyệt có khả năng giảm thiểu ảnh hưởng của các lỗ hổng XSS và ngăn chặn hành vi khai thác các dữ liệu bảo mật. Vì thế, kẻ tấn công thường lựa chọn phá vỡ CSP để thực hiện khai thác lỗ hổng cơ bản trên trình duyệt.

Chèn đánh dấu nguy hiểm

Đây là một kỹ thuật thu thập dữ liệu trên nhiều miền được sử dụng trong các trường hợp không thể khai thác XSS do trình duyệt hoặc ứng dụng sử dụng biện pháp lọc đầu vào hoặc bảo vệ nâng cao.

Các thông tin cá nhân, dữ liệu quan trọng và mã thông báo CSRF được khai thác và sử dụng với nhiều mục đích bất hợp pháp.

Cách ngăn chặn các cuộc tấn công XSS

Việc ngăn chặn XSS phụ thuộc vào độ phức tạp và cách xử lý dữ liệu của ứng dụng, sau đây là một số phương pháp dành cho bạn:

  • Lọc đầu vào của các thông tin cá nhân đảm bảo mức độ an toàn cao nhất.
  • Mã hoá dữ liệu đầu ra cho các dữ liệu truy xuất bằng HTML, URL, JavaScript hoặc CSS nhằm ngăn chặn các vấn đề lỗi.
  • Thiết lập danh sách các thẻ HTML được phép sử dụng và xoá bỏ các thẻ lỗi.
  • Sử dụng CSP để giảm thiểu mức độ ảnh hưởng của các lỗ hổng XSS.

Tổng kết về Cross-site scripting – XSS

Như vậy, các lỗ hổng XSS là một vấn đề nguy hiểm đối với trang web và ứng dụng. Vì thế hãy cẩn trọng trong việc xử lý các dữ liệu quan trọng tại đầu vào và đầu ra trên trình duyệt của bạn.

Nếu bạn có thắc mắc về Cross-site scripting hoặc muốn tìm hiểu về cách xử lý những trường hợp bị tấn công XSS hoặc những kiểu tấn công khác, hãy để lại ở bên bình luận bên dưới, BKHOST sẽ trả lời bạn trong thời gian sớm nhất.

P/s: Bạn cũng có thể truy cập vào Blog của BKHOST để đọc thêm các bài viết chia sẻ kiến thức về lập trình, quản trị mạng, website, domain, hosting, vps, server, email,… Chúc bạn thành công.

Các câu hỏi thường gặp về XSS

Các lỗ hổng XSS phổ biến như thế nào?

Các lỗ hổng XSS rất phổ biến và thường xuyên xảy ra trên các trình duyệt.

Các cuộc tấn công XSS phổ biến như thế nào?

Các cuộc tấn công XSS thường ít phổ biến hơn vì khả năng khai thác kém hơn so với các lỗ hổng.

Sự khác biệt giữa XSS và CSRF là gì?

XSS chạy các mã JavaScript độc hại trên trình duyệt của người dùng còn CSRF thực hiện các hành động mà người dùng không mong muốn.

Sự khác biệt giữa XSS và SQL injection là gì?

XSS là lỗ hổng phía máy khách tấn công vào người dùng ứng dụng khác, còn SQL injection là lỗ hổng phía máy chủ tấn công vào cơ sở dữ liệu của ứng dụng.

Làm cách nào để ngăn chặn XSS trong PHP?

Lọc đầu vào bằng danh sách trắng gồm các ký tự được phép hoặc các gợi ý loại/nhập truyền. Sau đó thoát đầu ra bằng htmlentities và ENT_QUOTES trên HTML hoặc Unicode JavaScript trên JavaScript.

Làm cách nào để ngăn chặn XSS trong Java?

Lọc đầu vào bằng danh sách trắng gồm các ký tự được phép. Sử dụng các thư viện Google Guava để mã hóa HTML đầu ra trên HTML hoặc sử dụng JavaScript Unicode trên JavaScript.

Giảm giá tới 40% khi đăng ký hosting tại BKHOST

BKHOST cung cấp dịch vụ Hosting với nhiều mức giá và cấu hình khác nhau, đáp ứng nhu cầu của tất cả khách hàng. Đăng ký ngay:

Cam kết hoàn tiền lên đến 100% nếu Quý khách không hài lòng với chất lượng sản phẩm, dịch vụ.

Tôi là Trịnh Duy Thanh, CEO & Founder Công ty Cổ Phần Giải Pháp Mạng Trực Tuyến Việt Nam - BKHOST. Với sứ mệnh mang tới các dịch vụ trên Internet tốt nhất cho các cá nhân và doanh nghiệp trong nước và quốc tế, tôi luôn nỗ lực hết mình nâng cấp đầu tư hệ thống phần cứng, nâng cao chất lượng dịch vụ chăm sóc khách hàng để đem đến những sản phẩm hoàn hảo nhất cho người tiêu dùng. Vì vậy, tôi tin tưởng sẽ đem đến các giải pháp CNTT mới nhất, tối ưu nhất, hiệu quả nhất và chi phí hợp lý nhất cho tất cả các doanh nghiệp.
Bình luận

Thanh toán linh hoạt

Chúng tôi chấp nhận thanh toán như ATM, Visa, Internet Banking, Paypal, Baokim, Ngân lượng

Gọi ĐT tư vấn ngay
Chat ngay qua Zalo
Chat ngay qua Messenger