2009-05-23 20 views
7

Hiện tại, chúng tôi đang phát triển một ứng dụng dựa trên AJAX hoàn toàn tương tác với máy chủ thông qua API RESTful. Tôi đã xem xét các đề án tiềm năng để bảo vệ chống lại các cuộc tấn công XSRF chống lại API.Bảo vệ XSRF trong ứng dụng kiểu AJAX

  1. tài khoản xác thực và nhận một cookie phiên, cũng là đúp nộp với mỗi yêu cầu.

  2. Chúng tôi triển khai người dùng OAuth theo số Javascript, truy xuất mã thông báo khi người dùng đăng nhập và ký tất cả yêu cầu với mã thông báo đó.

Tôi đang hướng tới phương pháp tiếp cận OAuth, chủ yếu là vì tôi muốn cung cấp quyền truy cập của bên thứ ba vào API của chúng tôi và tôi không muốn triển khai hai sơ đồ xác thực.

Có lý do nào khiến người tiêu dùng OAuth không hoạt động trong tình huống này không?

Trả lời

0

Cách dễ nhất để ngăn XSRF nó kiểm tra người giới thiệu của mỗi yêu cầu RESTful để đảm bảo yêu cầu đến từ cùng một tên miền. Cookie phiên là quan trọng để giữ trạng thái, nhưng nó sẽ không bảo vệ chống lại XSRF bởi vì nó cũng sẽ được gửi với một yêu cầu giả mạo. Nó phổ biến để xem hệ thống bảo vệ dựa trên XSRF dựa trên phần cứng mạng nhúng với yêu cầu bộ nhớ hạn chế, Motorola sử dụng phương pháp này trên hầu hết phần cứng của họ. Đây không phải là bảo vệ XSRF an toàn nhất, bảo vệ dựa trên mã thông báo tốt hơn nhưng cả hai hệ thống vẫn có thể bị bỏ qua bằng XSS. Vấn đề lớn nhất với bảo vệ XSRF dựa trên mã thông báo là phải mất rất nhiều thời gian để quay lại và sửa mọi yêu cầu và có thể bạn sẽ bỏ lỡ một vài yêu cầu.

Đảm bảo đọc trên same origin policy và đến scan your site for xss. Bạn cũng nên đọc TOP 10 của OWASP cho năm 2010 A3-Broken Authentication and Session Management.

4

Hầu hết thư viện AJAX sẽ đặt tiêu đề bổ sung "X-Requested-With: XMLHttpRequest", rất khó giả mạo trong tấn công XSRF cơ bản (mặc dù có thể nếu kết hợp với XSS). Xác minh rằng tiêu đề này tồn tại là một chiến lược phòng thủ chuyên sâu tốt nếu bạn mong đợi tất cả các yêu cầu của bạn là AJAX.

1

Sử dụng yêu cầu hai bước, yêu cầu đầu tiên cho máy chủ là mã thông báo không thể đoán trước, mã yêu cầu thứ hai cho hành động thực sự với mã thông báo.

Vì kẻ tấn công không thể dự đoán mã thông báo và không thể đọc được (cùng chính sách gốc) nên anh ta không thể cung cấp mã thông báo hợp lệ trong truy vấn thứ hai.

Nhưng hãy cẩn thận để không bị rò rỉ tokens (tìm hiểu về chụp json sử dụng khi họ ảnh hưởng đến giá trị cho một biến toàn cầu và vân vân) và đọc:

http://www.google.com/search?q=xsrf+defence

Các vấn đề liên quan