AJAX Security

Javascript và XML không đồng bộ (AJAX) là một trong những kỹ thuật mới nhất được sử dụng để phát triển inorder ứng dụng web nhằm mang lại trải nghiệm người dùng phong phú. Vì nó là một công nghệ mới nên có rất nhiều vấn đề bảo mật vẫn chưa được hoàn thiện và dưới đây là một số vấn đề bảo mật trong AJAX.

  • Bề mặt tấn công nhiều hơn vì có nhiều đầu vào hơn được bảo mật.

  • Nó cũng cho thấy các chức năng bên trong của các ứng dụng.

  • Không bảo vệ được thông tin và phiên xác thực.

  • Có một ranh giới rất hẹp giữa phía máy khách và phía máy chủ, do đó có khả năng mắc lỗi bảo mật.

Thí dụ

Đây là một ví dụ cho AJAX Security -

Vào năm 2006, một con sâu đã lây nhiễm dịch vụ email yahoo bằng cách sử dụng XSS và AJAX đã lợi dụng một lỗ hổng trong việc xử lý sự kiện onload của Yahoo Mail. Khi một email bị nhiễm được mở, con sâu này thực thi JavaScript của nó, gửi một bản sao đến tất cả các địa chỉ liên hệ Yahoo của người dùng bị nhiễm.

BẬT tay

Step 1- Chúng tôi cần cố gắng thêm nhiều phần thưởng hơn vào bộ phần thưởng được phép của bạn bằng cách sử dụng chèn XML. Dưới đây là ảnh chụp nhanh của kịch bản.

Step 2- Đảm bảo rằng chúng tôi chặn cả yêu cầu và phản hồi bằng Burp Suite. Cài đặt tương tự như hình dưới đây.

Step 3- Nhập số tài khoản như đã cho trong kịch bản. Chúng tôi sẽ có thể nhận được danh sách tất cả các phần thưởng mà chúng tôi đủ điều kiện nhận. Chúng tôi đủ điều kiện nhận 3 phần thưởng trong số 5 phần thưởng.

Step 4- Bây giờ chúng ta hãy nhấp vào 'Gửi' và xem những gì chúng ta nhận được trong XML phản hồi. Như được hiển thị bên dưới, ba phần thưởng mà chúng tôi đủ điều kiện được chuyển cho chúng tôi dưới dạng XML.

Step 5 - Bây giờ chúng ta hãy chỉnh sửa các XML đó và thêm cả hai phần thưởng khác.

Step 6- Bây giờ tất cả các phần thưởng sẽ được hiển thị cho người dùng để họ lựa chọn. Chọn những cái mà chúng tôi đã thêm và nhấp vào 'Gửi'.

Step 7 - Thông báo sau xuất hiện với nội dung: "* Xin chúc mừng. Bạn đã hoàn thành bài học này thành công."

Cơ chế phòng ngừa

Phía khách hàng -

  • Sử dụng .innerText thay vì .innerHtml.
  • Không sử dụng eval.
  • Không dựa vào logic của máy khách để bảo mật.
  • Tránh viết mã tuần tự hóa.
  • Tránh xây dựng XML động.
  • Không bao giờ truyền bí mật cho khách hàng.
  • Không thực hiện mã hóa trong mã phía máy khách.
  • Không thực hiện logic tác động đến bảo mật ở phía máy khách.

Phía máy chủ -

  • Sử dụng bảo vệ CSRF.
  • Tránh viết mã tuần tự hóa.
  • Người dùng có thể gọi dịch vụ trực tiếp.
  • Tránh xây dựng XML bằng tay, hãy sử dụng khuôn khổ.
  • Tránh xây dựng JSON bằng tay, hãy sử dụng một khuôn khổ hiện có.