2012-11-21 7 views
11

Vì vậy, tôi đang cố gắng hiểu điều cần làm ở đây ... Tôi đang thực hiện cuộc gọi POST tới máy chủ Django của mình từ iOS và tôi tiếp tục nhận được Lỗi 403 (Mã thông báo CSRF không hợp lệ). Tôi đang suy nghĩ về việc thực hiện một hàm sẽ trả lại cho tôi mã thông báo (bạn sẽ cần phải đăng nhập để truy cập chức năng đó), và sau đó thêm mã thông báo vào cuộc gọi POST của tôi.Mã thông báo CSRF ở Django và iOS

Bây giờ ... Tôi không hiểu điểm của việc đó là gì? Nếu tôi sử dụng TastyPie và đăng nhập bắt buộc là APIKey ... tôi có nên miễn kiểm tra csrf không?

Để đảm bảo tôi hiểu đúng ... là CSRF được tạo cho mỗi phiên người dùng? Vì vậy, nếu tôi không sử dụng Cookies, CSRF là không cần thiết?

Mọi người thường sử dụng Máy chủ Django của họ bằng iOS và thực hiện các cuộc gọi POST như thế nào?

Cảm ơn!

Trả lời

2

Bạn nói đúng, CSRF không có ý nghĩa nhiều trong trường hợp này, vì mục đích của nó là bảo vệ người dùng khỏi dữ liệu giả mạo trong trình duyệt.

Tôi tin rằng Tastypie sẽ tắt CSRF trên các chế độ xem theo mặc định.

11

Bạn nói đúng: nếu bạn không sử dụng cookie để quản lý phiên của mình, bạn không cần bảo vệ CSRF. CSRF hoạt động vì cookie phiên được tự động đính kèm theo yêu cầu; mã thông báo truy cập thì không.

Cá nhân tôi tìm thấy this article rất hữu ích. Nó chắc chắn là giá trị đọc, và có lẽ sẽ trả lời rất nhiều câu hỏi của bạn.

Đối với món ăn ngon: nó cho phép SessionAuthentication. Nếu bạn cho phép xác thực phiên trong in đậm, tôi khuyên bạn nên xem xét một cách để bảo vệ người dùng của bạn khỏi CSRF. Đối với các lược đồ xác thực khác, điều này dường như không cần thiết. Theo như tôi biết, Dmitry là đúng về ngon trong việc tắt CSRF theo mặc định, có nghĩa là nó là lạ mà bạn nhận được rằng 403 Lỗi. Có lẽ có cái gì đó khác đang diễn ra. Thử đóng chế độ xem trong @csrf_exempt.

Đối với mã thông báo CSRF, chúng còn được gọi là không độc lập phiên. Chúng có nghĩa là vĩnh viễn, nhưng bạn có thể biết rằng không thể cho cookie. Dù sao, điều này có nghĩa là các cookie CSRF vẫn tồn tại qua các phiên.