XSS (Cross-Site Scripting)

Một phần của tài liệu Bài giảng xây dựng website thương mại điện tử (Trang 108 - 111)

7.2.4.1. Mô êt số thông tin thực tế về XSS

Vào tháng 10 năm 2005, một người dùng đăng nhập tài khoản ở MySpace và xem profile của người khác. Trình duyệt xử lý JavaScript của trang này tự động update trên user profile thông báo là một người tên Samy là người hùng của họ. Một người chúng ta của người này vào xem profile và đồng ý trên profile là Samy là người hùng của anh ta. Sau đó một người nữa, cũng không cần biết Samy là ai, và thậm chí cũng không hề nghe tới Samy, đăng nhập vào MySpace và cũng đồng ý như trên. Việc này cứ thế tiếp diễn, và sau 24 giờ, Samy có trên 1 triệu chúng ta bè, và MySpace đã bị tắc nghẽn lưu lượng. Samy đã sử dụng XSS với khoảng 4000 kí tự text, tạo nên một cuộc tấn công DoS vào MySpace, một công ty có số server lên đến hàng ngàn! Cuộc tấn công của Samy được dùng để tham khảo cho các cuộc tấn công sử dụng XSS sau này. Cuộc phỏng vấn về Samy có thể xem tại: http://blogoscoped.com/archive/2005-10-14-n81.html

XSS có thể được dùng kèm với keylogger để ăn cắp mật khẩu tài khoản ngân hàng, tài khoản game online hoặc có thể được dùng để lấy cookies từ nạn nhân. Phương pháp

Hình 7. 1 Hoạt động của DoS và DdoS

này tuy đơn giản, nhưng rất nguy hiểm đối với những người sử dụng web.

7.2.4.2. Khái niê êm về XSS

Cross-Site Scripting hay còn được gọi tắt là XSS (thay vì gọi tắt là CSS để tránh nhầm lẫn với CSS-Cascading Style Sheet của HTML) là một kĩ thuật tấn công bằng cách chèn vào các website động (ASP, PHP, CGI, JSP ...) những thẻ HTML hay những đoạn mã script nguy hiểm có thể gây nguy hại cho những người sử dụng khác. Trong đó, những đoạn mã nguy hiểm đựơc chèn vào hầu hết được viết bằng các Client-Site Script như JavaScript, JScript, DHTML và cũng có thể là cả các thẻ HTML.

Kĩ thuật tấn công XSS đã nhanh chóng trở thành một trong những lỗi phổ biến nhất của Web Applications và mối đe doạ của chúng đối với người sử dụng ngày càng lớn. Người chiến thắng trong cuộc thi eWeek OpenHack 2002 là người đã tìm ra 2 XSS mới. Phải chăng mối nguy hiểm từ XSS đã ngày càng được mọi người chú ý hơn?

7.2.4.3. Phân loại XSS

XSS về có thể được phân loại như sau:

a.Stored XSS Attacks

Stored XSS là hình thức tấn công mà ở đó cho phép kẻ tấn công có thể chèn một đoạn script nguy hiểm (thường là Javascript) vào website của chúng ta thông qua một chức năng nào đó (vd: viết lời bình, guestbook, gởi bài..), để từ đó khi các thành viên khác truy cập website sẽ bị dính mã độc từ kẻ tấn công này, các mã độc này thường được lưu lại trong database của website chúng ta nên gọi là Stored. Stored XSS phát sinh do chúng ta không lọc dữ liệu do thành viên gởi lên một cách đúng đắn, khiến cho mã độc được lưu vào Database của website.

b.Reflected XSS Attacks

Trong hình thức này, kẻ tấn công thường gắn thêm đoạn mã độc vào URL của website chúng ta và gởi đến nạn nhân, nếu nạn nhân truy cập URL đó thì sẽ bị dính mã độc. Điều này xảy ra do ta không chú ý filter input từ URL của website mình.

7.2.4.4. Tìm hiểu về hoạt đô êng của XSS

Về cơ bản, hoạt động của XSS có thể được mô tả như hình 7.4 dưới đây:

Theo nguyên tắc trên, một hacker có thể lợi dụng các lỗ hổng bảo mật từ một website. Các thẻ HTML đều có thể là công cụ cho các cuộc tấn công bởi kĩ thuật XSS, trong đó 2 thẻ IMG và IFRAME có thể cho phép trình duyệt load thêm các website khác khi các lệnh HTML được hiển thị. Lợi dụng nguyên tắc này, các hacker có thể chèn các đoạn mã độc vào và khiến máy nạn nhân bị tấn công XSS.

7.2.4.5. Tác hại của XSS

XSS thường được sử dụng với các mục đích sau:  Đánh cắp thông tin

 Giúp hacker có thể truy cập được vào những thông tin nhạy cảm

 Lấy được quyền truy cập miễn phí vào những nội dung đúng ra phải trả tiền mới có được

 Dò xét sở thích của người sử dụng mạng

 Thay đổi diện mạo ( deface) một trang web nào đó Tấn công từ chối dịch vụ (DoS) Mã JavaScript độc có thể truy cập bất cứ thông tin nào sau đây:

Hình 7. 3 Mô tả Reflected XSS Attacks

 Cookie cố định (của site bị lỗi XSS) được duy trì bởi trình duyệt.  RAM Cookie (của site bị lỗi XSS)

 Tên của tất cả các cửa sổ được mở từ site bị lỗi XSS

 Bất cứ thông tin mà có thể truy cập được từ DOM hiện tại (như value, mã HTML…)

7.2.4.6. Mô êt số cách phòng chống

Người ta không lường hết được mức độ nguy hiểm của XSS nhưng cũng không quá khó khăn để ngăn ngừa XSS. Có rất nhiều cách để có thể giải quyết vấn đề này. OWASP (The Open Web Application Standard Project) nói rằng để có thể xây dựng các website bảo mật cao, đối với các dữ liệu của người sử dụng, nên:

Chỉ chấp nhận những dữ liệu hợp lệ. Từ chối nhận các dữ liệu hỏng.

Liên tục kiểm tra và thanh lọc dữ liệu.

Tuy nhiên trên thực tế, một số trường hợp phải chấp nhận mọi loại dữ liệu hay không có một bộ lọc phù hợp. Chính vì vậy phải có những cách riêng để giải quyết. Một trong những cách hay sử dụng là mã hoá các kí tự đặc biệt trước khi in ra website, nhất là những gì có thể gây nguy hiểm cho người sử dụng. Trong trường hợp này thẻ script sẽ được đổi thành script. Như vậy nó sẽ vẫn được in ra màn hình mà không hề gây nguy hiểm cho người sử dụng.

Những người phát triển web có thể bảo vệ website của mình khỏi bị lợi dụng thông qua tấn công XSS, bằng cách đảm bảo những trang phát sinh động không chứa các tag của script bằng cách lọc và xác nhận hợp lý các dữ liệu đầu vào từ phía người dùng hoặc mã hóa(endcoding) và lọc các giá trị xuất cho người dùng.

Một phần của tài liệu Bài giảng xây dựng website thương mại điện tử (Trang 108 - 111)

Tải bản đầy đủ (PDF)

(142 trang)