XSS là gì?
XSS là một trong những tấn công phổ biến và dễ bị tấn công nhất mà tất cả tester có kinh nghiệm đều biết đến. Nó được xem là một trong những tấn công nguy hiểm nhất đối với các ứng dụng web và mang lại những hậu quả nghiêm trọng.
Trong đó, tấn công XSS là một đoạn mã độc, để khai thác một lỗ hổng XSS, hacker sẽ chèn mã độc thông qua các đoạn script để thực thi ở phía Client. Thông thường, những cuộc tấn công XSS được sử dụng để vượt qua truy cập và mạo danh người dùng.
Mục đích chính của cuộc tấn công này để ăn cắp dữ liệu nhận dạng của người dùng như: session tokens, cookies và các thông tin khác. Trong hầu hết các trường hợp, cuộc tấn công XSS đang được dùng để ăn cắp cookie của người khác. Như chúng ta biết, cookie giúp bạn có thể đăng nhập tự động. Do đó với cookie bị đánh cắp, chúng tôi có thể đăng nhập bằng thông tin nhận dạng khác. Đây chính là một trong những lý do, tại sao cuộc tấn công này được coi là một trong những cuộc tấn công nguy hiểm nhất hiện nay.
Xem thêm:Ưu nhược điểm của Token mà bạn nên biết
Tấn công XSS hiện đang được thực hiện ở phía client. Nó có thể được thực hiện bởi các ngôn ngữ lập trình phía client khác nhau. Tuy nhiên, các cuộc tấn công này được thực hiện thường xuyên nhất với Javascript và HTML.
Cách thức hoạt động của XSS như thế nào?
Về bản chất, XSS là hình thức tấn công dựa trên việc gửi và chèn các lệnh hoặc script độc hại được viết bằng ngôn ngữ lập trình tương đồng với phía client như: Javascript, Flash, HTML, VBScript,… Trong đó ngôn ngữ lập trình chính thường được sử dụng là Javascript và HTML.
Tùy vào kiểu tấn công XSS mà hình thức tấn công được thực hiện theo các phương thức khác nhau và vị trí mã độc phản ánh cũng khác nhau. Các mã độc có thể nhập vào một script nào đó, sau đó chèn vào trong mã nguồn website. Điều này có thể khiến cho việc nhận dạng mã độc trở nên vô cùng khó khăn.
Dù vậy, bất cứ cuộc tấn công XSS nào cũng đều phải trải qua 2 quy trình như sau:
- Đưa mã độc vào trình duyệt client mà nạn nhân muốn truy cập.
- Nạn nhân truy cập vào website có mã độc, khi đó, dữ liệu người dùng sẽ bị đánh cắp và bắt buộc họ phải đăng nhập tài khoản của mình bằng các thông tin khác. Thông thường, trong trường hợp hacker nhằm vào một nạn nhân cụ thể, URL chứa mã độc sẽ được gửi đến các nạn nhân thông qua kỹ thuật social engineering hay phishing.
Tham khảo:
- Bảo mật website và những điều quan trọng cần lưu ý
- Công cụ nào quét mã độc website?
Những loại tấn công XSS phổ biến
Reflected XSS
Reflected XSS chính là hình thức tấn công được sử dụng nhiều nhất. Đây là nơi mã script độc hại đến từ phía HTTP request. Từ đó, hacker đánh cắp dữ liệu của người dùng, chiếm đoạt quyền truy cập và hoạt động trên web thông qua việc chia sẻ URL chứa mã độc. Tuy nhiên, hình thức này thường nhắm đến ít nạn nhân.
Stored XSS
Stored XSS khác là hình thức này nhắm đến nhiều nạn nhân cùng lúc. Đây là nơi script độc hại đến từ cơ sở dữ liệu của website. Hacker chèn các mã độc vào cơ sở dữ liệu thông qua dữ liệu đầu vào như: input và form,… Khi người dùng truy cập và tiến hành những thao tác liên quan đến dữ liệu đã được lưu thì mã độc ngay lập tức hoạt động trên trình duyệt.
DOM-based XSS
DOM-based XSS là nơi lỗ hổng bảo mật tồn tại trong mã phía client chứ không phải ở mã phía server. Hình thức này dùng để khai thác XSS dựa vào việc thay đổi HTML tài liệu, hay nói cách khác là thay đổi cấu trúc DOM.
Cách kiểm tra và ngăn chặn XSS
XSS thường xuyên tấn công người dùng dưới dạng âm thầm mà không một ai hay biết. Thế nhưng bạn hoàn toàn có thể áp dụng một số cách kiểm tra cụ thể hoặc sử dụng chiến thuật ngăn chặn các đợt tấn công. Vậy bạn còn chờ gì mà không nhanh tay ghi chép ngay cho mình cách kiểm tra và ngăn chặn XSS hữu ích sau đây:
Cách phát hiện
Để có thể biết được liệu các hacker có tấn công XSS vào hệ thống cơ sở dữ liệu hay không bạn hãy áp dụng cách kiểm tra hộp đen trước. Với cách này bạn có thể hiểu là sẽ thực hiện test mà không cần xem xét đến code. Tất nhiên việc kiểm tra code luôn được các chuyên gia khuyến khích vì nó cho ra kết quả khả quan và đáng tin cậy hơn.
Trong quá trình kiểm tra thử, các tester nên xem xét những phần nào của web có nguy cơ bị tấn công bởi XSS. Bạn cũng nên liệt kê tất cả những nghi ngờ đó thành một tài liệu kiểm thử để giảm thiểu tình trạng thiếu sót. Sau đó, tester hãy lập một bảng kế hoạch để xác định liệu Script nào cần phải thực hiện kiểm tra nhất. Trong đó điều quan trọng là kết quả liệu có ý nghĩa gì, ứng dụng dễ bị lỗ hổng hay không và phân tích kết quả sao cho kỹ càng nhất.
Cách ngăn chặn
Có thể nhận định rằng XSS là một dạng tấn công cơ sở dữ liệu khá nguy hiểm với nhiều rủi ro tiềm ẩn xảy ra nhất. Thế nhưng người dùng vẫn nên lập cho mình một kế hoạch để ngăn ngừa tình trạng này xảy ra. Và thật may với độ phổ biến của các cuộc tấn công hiện đã có rất nhiều cách để ngăn chặn XSS. Trong đó điển hình như: Filtering, Data Validation, Escaping. Cụ thể như sau:
Xác thực đầu vào
Cách ngăn chặn sự tấn công XSS đầu tiên bạn cần thực hiện đó là xác thực đầu vào. Tất cả những gì được nhập bởi người dùng phải được xác minh rõ ràng và chính xác. Bởi vì đầu vào sẽ tác động trực tiếp đầu ra. Do đó, việc xác thực này có thể được đặt tên làm cơ sở dữ liệu đồng thời đảm bảo tính bảo mật của hệ thống dữ liệu đó. Tuy nhiên, việc này chỉ góp phần làm giảm thiểu được những rủi ro chứ không thể ngăn chặn triệt để tất cả các lỗ hổng mà XSS gây ra.
Lọc đầu vào
Một cách nữa bạn cũng có thể áp dụng để ngăn chặn sự tấn công XSS là lọc đầu vào của người dùng. Có nghĩa là bạn thực hiện tìm kiếm những từ khóa nguy hiểm ở mục nhập của người dùng. Sau đó xóa chúng hoặc thực hiện các thao tác thay thế bằng chuỗi trống. Các từ đó có thể sẽ là những thẻ như script, lệnh javascript hay đánh dấu HTML,…
Việc lọc đầu vào của người dùng này rất dễ thực hiện. Chính vì vậy, bạn hoàn toàn có thể áp dụng khoa nhiều cách khác nhau như:
- Thực hiện bởi Developer đã được viết mã phía server
- Thông qua hệ thống thư viện ngôn ngữ lập trình thích hợp mà người dùng đang dùng.
Trường hợp này nhìn chung một số Developer có thể viết mã riêng của họ để tìm kiếm những từ khóa thích hợp và xóa chúng. Tuy nhiên, cách dễ dàng hơn mà các chuyên gia gợi ý là chọn thư viện ngôn ngữ lập trình thích hợp để lọc đầu vào. Đây được xem là cách đáng tin cậy vì các thư viện đó đã được nhiều nhà phát triển áp dụng và thử nghiệm.
Xem thêm:
- Front-End Developer là gì và cần những kỹ năng nào?
- Làm sao để trở thành một Back-End Developer?
Sử dụng các ký tự Escape
Ngoài ra để ngăn chặn quá trình tấn công của XSS bạn cũng có thể áp dụng các ký tự Escape. Trong thực tế hiện nay thì đa phần những ký tự này đang được thay đổi bằng các mã số đặc biệt. Ví dụ các ký tự Escape giống như & #. Điều quan trọng là bạn phải làm sao để tìm kiếm các thư viện thích hợp với ký tự Escape.
Trên đây là tất tần tật các thông tin chi tiết giúp bạn giải đáp thắc mắc XSS là gì và những vấn đề xung quanh về XSS. Hy vọng rằng, qua bài viết trên bạn sẽ hiểu và áp dụng một cách hiệu quả những kiến thức gợi ý vào công việc trong thực tế để kiểm tra và ngăn chặn sự tấn công từ XSS.
Có thể bạn quan tâm:
- Tất tần tật và tấn công từ chối dịch vụ DDOS
- SQL Injection là gì? Cách để phòng tránh tấn công SQL Injection hiệu quả
- Tấn công phát tán Malware có nguy hiểm hay không?
- Thông tin về tấn công mật khẩu Active Online