Cross-site scripting (XSS) là một kiểu tấn công có thể được thực hiện để xâm phạm người dùng của một trang web. Việc khai thác lỗ hổng XSS cho phép kẻ tấn công chèn các tập lệnh phía máy khách vào các trang web được người dùng xem. Được liệt kê là một trong những lỗ hổng OWASP Top 10, XSS là lỗ hổng phổ biến nhất được gửi trên nền tảng Detectify Crowdsource do đó một nguy cơ bảo mật công cụ của chúng tôi liên tục kiểm tra .

 Tập lệnh chéo trang và cách sửa lỗi - Phát hiện blog "width =" 500 "height =" 332 "/> </p>
<h2> Cross-site scripting: Điều gì có thể xảy ra? </h2>
<p> Kẻ tấn công có thể: </p>
<ul>
<li> giành quyền truy cập vào cookie của người dùng, ID phiên, mật khẩu, thư cá nhân, v.v … </li>
<li> đọc và truy cập nội dung của trang cho bất kỳ người dùng bị tấn công nào và do đó tất cả thông tin được hiển thị cho người dùng </li>
<li> thỏa hiệp nội dung được hiển thị cho người dùng </li>
</ul>
<p> Một cuộc tấn công XSS đáng chú ý là <a href= Tweetdeck XSS worm được xuất bản vào năm 2014. Nó cho phép kẻ tấn công truyền tải trọng tải độc hại của mình cho tất cả người dùng Tweetdeck qua Twitter, do đó gây ra sự xâm phạm khối lượng tài khoản Twitter.

Ví dụ về tập lệnh cross-site (XSS)

Để hiển thị cách hoạt động của lỗ hổng bảo mật, hãy xem ví dụ. Giả sử bạn có hộp tìm kiếm trên trang web của mình. Nếu không có kết quả, trang web nên nói “Không thể tìm thấy bất kỳ trang nào khi tìm kiếm [what the user searched for].”.

Làm điều này trong PHP nó có thể trông giống như thế này:

 

Điều này, nói cách khác, xuất dữ liệu do người dùng cung cấp (truy vấn tìm kiếm) thẳng vào tài liệu HTML. Nếu truy vấn tìm kiếm chứa HTML, trình duyệt web của người dùng sẽ hiển thị nó. Hãy tưởng tượng kẻ tấn công gửi một liên kết như sau đến nạn nhân:

 http://example.com/search.php?query= 

Điều này sẽ làm cho nạn nhân tìm kiếm:

 

Vì không có xác thực dữ liệu, trình duyệt mục tiêu sẽ hiển thị:

 Không thể tìm thấy bất kỳ trang nào khi tìm kiếm 

HTML được tiêm sẽ được thực thi. HTML chứa một thẻ tập lệnh sẽ đánh giá JavaScript. JavaScript sẽ lấy cookie của người dùng và gửi các giới hạn đó tới miền của bên thứ ba trong việc kiểm soát kẻ tấn công. Sau đó, kẻ tấn công sẽ có thể đặt cookie của riêng mình thành cookie bị đánh cắp của nạn nhân, do đó sẽ truy cập dữ liệu của nạn nhân. Đây là một ví dụ phổ biến về một cuộc tấn công leo thang đặc quyền bằng cách viết kịch bản cross-site và cưỡi phiên.

Khắc phục kịch bản lệnh chéo trang web

Việc khắc phục các lỗ hổng XSS phụ thuộc rất nhiều vào bối cảnh và các bản vá khác nhau. Dưới đây là một số mẹo chung (nơi UNTRUSTED là nơi người dùng cung cấp dữ liệu).

Cơ thể HTML

Ví dụ

  KHÔNG ĐƯỢC NỮA 

Giải pháp
Chuyển đổi thành thực thể HTML (ví dụ. & Thành & amp; v.v.)
Xem PHP htmlspecialchars ()

Thuộc tính HTML

Ví dụ

 

Giải pháp
Chuyển đổi đầu vào người dùng không đáng tin cậy sang các thực thể HTML để ngăn việc tạo các thuộc tính khác và nver cho phép bất kỳ dữ liệu người dùng nào tham số "id", "class" hoặc "name". Hãy rất thận trọng khi cung cấp dữ liệu người dùng vào trình xử lý sự kiện DOM (ví dụ: onclick), tại thời điểm chúng được thực hiện để thực thi JavaScript.

URL không đáng tin cậy

Ví dụ

  liên kết 

Giải pháp
URL mã hóa dữ liệu người dùng, danh sách trắng đã biết URL và chạy dữ liệu người dùng thông qua thư viện URL thích hợp bằng ngôn ngữ của bạn. Lưu ý đến giao thức được chỉ định và nếu bạn mong đợi các liên kết HTTP hoặc HTTPS, hãy đưa các liên kết đó vào danh sách trắng. Ngăn JavaScript chạy bằng cách sử dụng trình xử lý giao thức.

Nhận tham số

Ví dụ

  liên kết 

Giải pháp
URL mã hóa dữ liệu người dùng và ngăn việc sử dụng dấu và vì nó có thể dẫn đến các vấn đề ô nhiễm tham số.

Giá trị CSS

Ví dụ

 

Giải pháp
CSS hex mã hóa giá trị.

Biến Javascript

Ví dụ

 

Giải pháp
Trích dẫn xung quanh biến và mã hóa hex. Ngăn chặn ngắt dòng.

DOM XSS

Ví dụ

 element.innerHTML = UNTRUSTED

Giải pháp
Vệ sinh bằng thư viện được viết bằng ngôn ngữ bạn sử dụng. Thực thi việc sử dụng các hàm an toàn hơn bất cứ khi nào có thể áp dụng (e. G. InnerText thay vì innerHTML). Hãy rất cẩn thận khi xác định dữ liệu nào được phép in. Tốt hơn nên có danh sách trắng các ký tự được phép hơn danh sách đen.

Để có danh sách mẹo mở rộng hơn, hãy xem mẹo phòng ngừa XSS của OWASP . Bạn cũng có thể tìm hiểu thêm về XSS bằng cách chuyển đến trang tài nguyên XSS của chúng tôi .

Cách phát hiện có thể giúp

Dò tìm là trình quét bảo mật web thực hiện các kiểm tra hoàn toàn tự động để xác định các vấn đề bảo mật trên trang web của bạn. Nó kiểm tra trang web của bạn cho hơn 1000 lỗ hổng, bao gồm cả cross-site scripting (XSS). Đăng ký dùng thử miễn phí và tìm hiểu xem bạn có dễ bị tổn thương không »

Tài nguyên

Bài viết này đã được cập nhật vào ngày 7 tháng 8 năm 2018.

nguồn
(https://blog.detectify.com/2015/12/16/what-is-cross-site-scripting-and-how-can-you-fix-it/)

Source link

Đưa ra một phản hồi

Vui lòng nhập bình luận của bạn!
Vui lòng nhập tên của bạn ở đây