XSS là gì? Cách truy vết và phòng chống tấn công XSS hiệu quả

Nếu là một nhà quản trị website hoặc một tester thì ắt hẳn thuật ngữ XSS đã không còn quá xa lạ với bạn phải không? Đây là một lỗ hổng bảo mật điển hình trong cơ sở dữ liệu và các hacker thường nhắm đến lỗ hổng này để chiếm quyền điều hướng website. Một khi website hoặc ứng dụng bị tấn công thông qua XSS sẽ gây nên rất nhiều rủi ro về thông tin, dữ liệu của người dùng. Vậy thực chất XSS là gì? Làm sao để truy vết và phòng chống chúng xâm nhập vào website? Cùng LPTech tìm hiểu ở bài viết dưới đây nhé!

XSS là gì?

XSS (Cross Site Scripting) là một trong những hình thức tấn công mạng mà các Tester có lẽ quen thuộc nhất. Tấn công XSS xảy ra khi có lỗ hổng trong việc bảo mật website mà hacker sẽ lợi dụng lỗ hổng này để ngụy trang các mã độc dưới dạng script và tiến hành vượt qua truy cập từ phía Client. 

Các hacker lợi dụng hình thức XSS này đa phần để ăn cắp dữ liệu nhận dạng của người dùng như nhận diện session tokens, cookies và một vài thông tin khác. Một khi hacker đã đăng nhập vào những tài khoản nhận diện này, chúng sẽ chiếm quyền kiểm soát tất cả tính năng và dữ liệu sẵn có của ứng dụng.

XSS mặc dù được đánh giá là hình thức tấn công web đơn giản, tuy nhiên nó lại cực kỳ nguy hiểm và được nhiều hacker sử dụng nhất hiện nay.

XSS tấn công như thế nào?

Đúng như tên gọi Cross Site Scripting, XSS sẽ tấn công bằng cách gửi và chèn một số lệnh script độc hại được viết bằng các ngôn ngữ lập trình quen thuộc như JavaScript, HTML, VBScript hay Flash,... Tuy nhiên JavaScript và HTML là hai ngôn ngữ được sử dụng nhiều hơn cả.

Khi hacker đã xác định được website bảo mật kém và dễ dàng tấn công, chúng sẽ tiến hành cài mã độc để trả về JavaScript độc hại cho người dùng. Khi mã độc đã thực thi bên trong trình duyệt, hacker sẽ có thể toàn quyền xâm nhập và sử dụng dữ liệu trong ứng dụng của người dùng.

XSS khi tạo được lỗ hổng, hacker sẽ xâm nhập website và có thể:

  1. Mạo danh danh tính của nạn nhân để thực hiện các thao tác hoặc giao dịch thông qua ứng dụng.
  2. Truy cập và đọc được các dữ liệu được lưu trữ trong website.
  3. Biết được thông tin đăng nhập của người dùng.
  4. Chèn mã độc Trojan vào website.

Một số cách thức tấn công phố biến nhất của XSS:

  1. Hacker tạo các form thông tin hoặc website giả mạo để dẫn dụ nạn nhân điền thông tin vào.
  2. Một số website được cài đặt quảng cáo, khi người dùng nhấn vào có thể bị cài mã độc XSS.
  3. Thông quan các email chứa mã nguồn độc hại. Khi hacker tìm được những lỗ hổng về bảo mật của website, chúng sẽ gửi từng mã lệnh đến người dùng cuối và ngay khi người dùng nhấn vào, website sẽ bị xâm nhập.

Cách thức tấn công XSS phổ biến

Hiện nay, XSS được chia ra làm 3 loại phổ biến nhất bao gồm:

Reflected XSS

Reflected XSS xảy ra khi một ứng dụng nhận dữ liệu trong HTTP request và đưa dữ liệu đó vào phản hồi ngay lập tức theo cách không an toàn. Hình thức này được xem là loại XSS được các hacker sử dụng nhiều nhất. Từ mã độc này, hacker sẽ đánh cắp dữ liệu và thông tin người dùng, sau đó chiếm quyền kiểm soát của họ trên website. Tuy nhiên hình thức này chỉ có thể nhắm đến ít nạn nhân. 

Stored XSS

Stored XSS là hình thức tấn công nhắm vào nhiều nạn nhân cùng một lúc bằng cách cài trực tiếp mã độc vào cơ sở dữ liệu của website, thông thường là từ các dữ liệu đầu vào như input, form thông tin,... Ngay khi người dùng thực hiện thao tác liên quan đến các dữ liệu đã bị cài mã độc thì hacker sẽ chiếm được quyền kiểm soát và truy cập website.

Thông thường hình thức tấn công này sẽ xảy ra khi người dùng không kiểm tra kỹ dữ liệu đầu vào, ví dụ như các comment, form thông tin,... Với Stored XSS, hacker phải thực hiện thông qua 2 bước để có thể đánh cắp được dữ liệu của người dùng: 

Đầu tiên, hacker sẽ thông qua các dữ liệu đầu vào mà người dùng đã điền để chèn vào CSDL các đoạn mã độc. Sau đó, khi người dùng truy cập vào website/ ứng dụng và thực hiện thao tác liên quan đến các dữ liệu đã được chèn mã độc này, đoạn mã script được chèn sẽ thực thi ngay lập tức trên thiết bị của nạn nhân.

DOM-based XSS

DOM-based XSS là một loại lỗ hổng xuất hiện khi JavaScript lấy dữ liệu từ nguồn do kẻ tấn công kiểm soát, chẳng hạn như URL và chuyển nó đến một bộ đệm hỗ trợ thực thi mã động, chẳng hạn như eval() hoặc innerHTML. Điều này cho phép kẻ tấn công thực thi JavaScript độc hại, thường cho phép chúng chiếm đoạt tài khoản của người dùng khác.

DOM-based XSS đến từ phía máy khách chứ không phải máy chủ. Hình thức XSS này xâm nhập dữ liệu dựa vào sự thay đổi địa chỉ HTML, cụ thể hơn chính là thay đổi cấu trúc DOM.

Các bài kiểm tra XSS

Để kiểm tra và truy vết sớm các lỗ hổng truy cập XSS, người dùng có thể thực hiện bài kiểm tra cho website thông qua hộp đen hoặc qua các đoạn code.

Kiểm tra thông qua hộp đen

Black-box testing hay kiểm tra tấn công XSS qua hộp đen nghĩa là bạn không cần phải kiểm tra code. Khi bắt đầu, bạn cần kiểm tra xem phần nào của website dễ bị tấn công XSS nhất và liệt kê đầy đủ để chắc rằng không một khía cạnh nào trên web bị bỏ sót. Sau đó, bạn hãy có kế hoạch kiểm tra hộp đen của những trường khía cạnh đã liệt kê và kết quả sẽ cho bạn biết rằng ứng dụng/ website đó có dễ bị tấn công hay không.

Kiểm tra qua các đoạn code

Cũng tương tự như cách kiểm tra hộp đen kia, sau khi đã liệt kê được những khía cạnh dễ bị tấn công nhất, bạn cần tiến hành kiểm tra code của chúng. Để kiểm tra khả năng bị tấn công, bạn cần xem xét các script đã nhập phản hồi thế nào và có thực thi theo lệnh hay không.

Ví dụ: Khi bạn nhập đoạn script <script>alert(document.cookie)</script>. Nếu lúc này script được thực thi thì khả năng cao website của bạn đã bị tấn công bởi mã độc XSS.

Cách ngăn chặn XSS như thế nào?

XSS vẫn là một mối nguy hại đáng lo của các nhà quản trị web vì chúng mang đến rất nhiều rủi ro. Do đó, việc chuẩn bị một số kế hoạch ngăn chặn sự tấn công của XSS là điều cần thiết.

Hiện nay, thông thường các nhà quản trị website sẽ sử dụng 3 phương pháp sau đây để ngăn chặn XSS:

Data validation

Dù với phương pháp nào đi chăng nữa, bước đầu tiên để ngăn chặn xâm nhập XSS đó là người dùng cần xác thực dữ liệu đầu vào (Input validation). Mọi thông tin khi bạn nhập vào cần phải được xác thực vì tất cả thông tin này cần phải dẫn đến dữ liệu đầu ra. Do đó, data validation được xem là cơ sở, nền tảng quan trọng nhất để đảm bảo tính bảo mật của hệ thống website ứng dụng.

> Tìm hiểu thêm về cách sử dụng session (phiên) sau khi xác thực dữ liệu thành công: Session là gì? Cách phân biệt giữa session và cookie

Filtering

Mặc dù xác thực dữ liệu đầu vào có thể phần nào ngăn chặn tấn công XSS, tuy nhiên chúng không đủ hiệu quả nếu mã độc XSS được code tinh vi.

Lúc này, phương pháp Filtering (Lọc thông tin đầu vào) được đánh giá là có khả năng ngăn chặn tốt hơn. Bộ lọc này tìm kiếm các từ khóa có khả năng gây nên rủi ro trong thông tin input của người dùng và xóa hoặc thay thế chúng bằng những chuỗi ký tự trống.

Một số từ khóa tiềm ẩn rủi ro tấn công XSS có thể là:

  1. <script></script> tags.
  2. Javascript commands.
  3. HTML markup.

Escaping

Đây là một phương pháp ngăn chặn XSS khá đặc biệt. Với phương pháp này, các ký tự thích hợp, sẽ được thay thế bằng một số đoạn code đặc biệt, ví dụ: ký tự ‘escaping’ có thể được thay thế bằng ‘&#60’.

Qua bài viết trên đây, LPTech đã giải đáp cho bạn thắc mắc về khái niệm tấn công XSS là gì và các mối nguy hại khi website bị chúng tấn công. XSS là một hình thức tấn công mạng rất phổ biến hiện nay và ảnh hưởng nặng nề đến trang web của bạn. Do đó, hãy chuẩn bị cho mình các kiếm thức kiểm tra và ngăn chặn tấn công từ XSS nhé. Hy vọng bài viết hôm nay đã mang đến cho bạn thật nhiều thông tin bổ ích.

Thông tin liên hệ

Nếu bạn có thắc mắc gì, có thể gửi yêu cầu cho chúng tôi, và chúng tôi sẽ liên lạc lại với bạn sớm nhất có thể .

Công ty TNHH TMĐT Công nghệ LP

Giấy phép kinh doanh số 0315561312/GP bởi Sở Kế Hoạch và Đầu Tư TP. Hồ Chí Minh.

Văn phòng: Lầu 4, Toà nhà Lê Trí, 164 Phan Văn Trị, Phường 12,Quận Bình Thạnh, HCMC

Hotline: 0338 586 864

Mail: sales@lptech.asia

Zalo:LP Tech Zalo Official

Liên hệ qua Zalo: 0338586864 ( hoặc bấm vào link này: http://lptech.asia/zalo-lptech). Hoặc nhập thông tin mà bạn cần hỗ trợ vào ô liên hệ bên dưới để lên lạc với LPTech nhé.

Bài viết cùng chuyên mục

CSRF là gì? Tìm hiểu cách chống tấn công giả mạo...

CSRF (Cross-Site Request Forgery) là một dạng tấn công trong các ứng dụng web. Tìm hiểu chi tiết về CSRF và cách bảo vệ ứng dụng khỏi...

Pentest là gì? Tầm quan trọng của kiểm thử xâm nhập

Tìm hiểu về phương pháp kiểm thử xâm nhập - Pentest, một giải pháp bảo mật thiết yếu cho doanh nghiệp trong thời đại số hóa.

NAT là gì? Phân loại NAT theo chức năng và cách...

NAT là một kỹ thuật mạng dùng để chuyển đổi địa chỉ IP của một gói data khi nó đi qua một thiết bị mạng như router hoặc tường lửa. Các...

Tấn công brute-force là gì? Cách phòng chống tấn...

Brute force là một hình thức tấn công mà các hacker thường sử dụng. Chúng thực hiện bằng các phần mềm tự động để thử mật khẩu tài khoản...

Trojan là gì? Cách nhận biết và phòng chống virus...

Trojan là gì? Đây là một loại virus độc hại được tạo ra để xâm nhập máy tính trái phép. Một khi đã xâm nhập vào, chúng sẽ phá hoại, làm...

Phishing là gì? Cách phòng chống lừa đảo bằng...

Phishing là một hình thức lừa đảo, giả mạo các tổ chức uy tín, người quen của nạn nhân để đánh cắp thông tin cá nhân như mật khẩu tài...

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


Hibernate ORM là gì? Khi nào nên dùng hibernate...

Hibernate ORM là một khung làm việc mã nguồn mở hoạt động như một tầng trung gian giữa ứng dụng và cơ sở dữ liệutrong Java dùng để ánh xạ các đối...

cURL là gì? Các câu lệnh cơ bản để sử dụng cURL

cURL là công cụ mạnh mẽ giúp bạn gửi và nhận dữ liệu qua nhiều giao thức khác nhau. Tìm hiểu chi tiết về cURL và các tính năng, giao thức mà nó hỗ...

CQRS Pattern là gì? Design pattern chuyên tách...

Tìm hiểu thông tin chi tiết về CQRS Pattern. CQRS (Command Query Responsibility Segregation) là một pattern giúp tách biệt command và query cực...

Chúc mừng sinh nhật Sếp Phú

Một hành trình mới bắt đầu cùng nhiều thử thách mới. Với sự tự tin, kiên cường và bản lĩnh, LPTech tin chắc rằng Sếp Phú của LPTech sẽ có nhiều...

Bool là gì? Tìm hiểu về kiểu dữ liệu bool trong...

Boolean là một kiểu dữ liệu cơ bản trong lập trình với C/C++, Jav,... Bool dùng để biểu diễn các giá trị logic đúng (true) hoặc sai (false). Xem...

Unit Test là gì? Tìm hiểu về khái niệm kiểm thử...

Unit Test sẽ giúp người dùng có thể xây dựng dự án một cách hiệu quả, để biết được những thông tin hữu ích về Unit Test. Hãy theo dõi thông tin...

CSRF là gì? Tìm hiểu cách chống tấn công giả...

CSRF (Cross-Site Request Forgery) là một dạng tấn công trong các ứng dụng web. Tìm hiểu chi tiết về CSRF và cách bảo vệ ứng dụng khỏi nguy cơ này.

Middleware là gì? Tầm quan trọng của middleware...

Middleware là một đoạn mã trung gian nằm trong các ứng dụng web được thiết kế trên mô hình client-server. Tìm hiểu middleware là gì và ứng dụng của...

JWT là gì? Tìm hiểu về khái niệm JSON Web Token

JWT (JSON Web Token) là một phương thức xác thực bằng mã hóa phổ biến trong các ứng dụng web, giúp truyền tải thông tin, xác thực và ủy quyền một...

Shell là gì? Các loại môi trường dòng lệnh phổ...

Shell còn được gọi là môi trường dòng lệnh. Đây là nơi cho phép người dùng tương tác với hệ điều hành thông qua các dòng lệnh. Tìm hiểu về shell và...