Trong trợ cấp ngầm định, mã thông báo truy cập được gửi trở lại trong URL gọi lại. Đây không phải là một nguy cơ bảo mật bởi vì, nếu URL gọi lại này được lưu trữ trong hop. Nói chung, chúng tôi khuyên bạn không nên gửi dữ liệu nhạy cảm trong thông số URL và mã thông báo truy cập này sẽ là mã thông báo để truy cập tất cả tài nguyên người dùng được bảo mật. Vì vậy, tại sao nó được chuyển thành mảnh trong URLKhoản Trợ cấp Ima ngầm 2.0 Oauth an toàn là bao nhiêu?
Trả lời
Xây dựng ứng phó @ Vlatko của ...
Để giảm thiểu nguy cơ gửi token trong đoạn (hoặc thông qua bất kỳ cấp OAuth2 khác):
- đảm bảo rằng các thiết bị đầu cuối OAuth và gọi lại thiết bị đầu cuối là TLS (https) (xem countermeasures)
- gửi một state parameter để ngăn chặn cross-site giả mạo (xem thêm: http://tools.ietf.org/html/rfc6749#section-4.2.1)
Phát hành mã thông báo truy cập ngắn (như @ vlatko đã nói) sẽ làm giảm tác động của mã thông báo bị rò rỉ, nhưng không phải là biện pháp phòng ngừa.
Giống như bạn đã chỉ ra, mã thông báo được chuyển đoạn URI. Vì các trình duyệt không gửi các đoạn URL đến các máy chủ HTTP, cơ hội mà ai đó sẽ nghe trộm và nhận mã thông báo truy cập sẽ giảm đáng kể.
Ngoài ra còn có các biện pháp bảo mật bổ sung, như chỉ phát hành mã thông báo truy cập tạm thời ngắn trong luồng tài trợ tiềm ẩn.
Thông tin khác trong OAuth2 threat models document.
Ngay cả khi access token được gửi qua https, vì một mảnh của nó, nó sẽ không thể cho các máy chủ hop trung gian trong mạng để sniff nó – Karthik
Hmmm, tôi sợ có một số hiểu lầm trong các câu trả lời ở trên. Mặc dù chuỗi truy vấn URL được bảo mật khi sử dụng TLS và do đó mã thông báo truy cập được bảo vệ trong chuyến bay, nó được hiển thị trong trình duyệt của người dùng (một phần lịch sử của họ) và cũng trong nhật ký trình duyệt web đích. Hầu hết các trình duyệt web sẽ ghi lại toàn bộ URL của yêu cầu gửi đến. Đây là vấn đề bổ sung được gọi là vấn đề rò rỉ "giới thiệu" trong đó chuỗi truy vấn sẽ được chuyển đến các trang web của bên thứ ba. Một cái nhìn tổng quan tốt có thể được tìm thấy tại địa chỉ:
http://blog.httpwatch.com/2009/02/20/how-secure-are-query-strings-over-https/
vlatko - bạn đúng khi nói rằng đoạn URI có một số thuộc tính đặc biệt và vì vậy, hãy nói đúng các nhận xét ở trên của tôi không áp dụng. Tuy nhiên, đây là một khía cạnh rất mong manh của việc trao đổi tin nhắn - bạn thực sự phụ thuộc vào hành vi cụ thể của trình duyệt trên một trực tiếp để bảo vệ luồng (nó bỏ qua thành phần mảnh của một URI trên trực tiếp).Nếu đoạn URI được chọn ở đâu đó, nó sẽ tạo ra một mã thông báo đa sử dụng cho kẻ tấn công. – user3101375
Bạn hoàn toàn chính xác. Kiểu xác thực này không an toàn theo định nghĩa. –
- 1. Khoản tiền khóa là bao nhiêu?
- 2. Cách an toàn để sử dụng API REST Oauth 2.0 từ javascript
- 3. Tiêu đề cấp phép OAuth 2.0
- 4. Phiên Meteor bao nhiêu là
- 5. PlayN được Google hỗ trợ bao nhiêu?
- 6. Triển khai Nhà cung cấp OAuth 2.0 sử dụng Coldfusion
- 7. Android & OAUTH 2.0
- 8. Hướng dẫn OAuth 2.0?
- 9. Truy xuất mã thông báo truy cập của OAuth 2.0 (trợ cấp ngầm định) từ Máy khách Java Desktop bằng cách sử dụng API RESTDrive REST.
- 10. Bảo mật kênh TCP mở, an toàn là bao lâu?
- 11. Có bao nhiêu thư mục máy chủ Windows 2008 r2 giữ an toàn?
- 12. Thư viện nào sẽ cung cấp xác thực OAuth 2.0 dễ dàng nhất cho Sinatra
- 13. OAuth 2.0 - Có gì mới?
- 14. Bao nhiêu C++ được hỗ trợ trong Objective-C++
- 15. Điều gì là tốt nhất cho auth ASP.NET MVC REST API? OAuth 2.0 hoặc OAuth 1.0?
- 16. An toàn loại an toàn()
- 17. Tài khoản duy nhất cho nhiều nhà cung cấp OAuth (Facebook, Google, Windows Live)?
- 18. Có bao nhiêu thử nghiệm là đủ?
- 19. Chi phí '$ (this)' này là bao nhiêu?
- 20. Bao nhiêu là PhoneGap được sử dụng
- 21. Số hồ sơ này là bao nhiêu?
- 22. Xác thực OAuth an toàn trên Twitter trong JavaScript/jQuery (cộng với trợ giúp bên máy chủ)
- 23. OAuth 2.0 Nhà cung cấp nhận dạng trong Windows Azure AppFabric Access Service Control (ACS)
- 24. OAuth 2.0 trên C++ (cho UNIX)
- 25. Là chuỗi String.intern() an toàn
- 26. Triển khai Nhà cung cấp .NET OAuth 2.0. 2 Mẫu DotNotOpenAuth có chân?
- 27. OAuth 2.0. Không có phiên nào? (Stateless)
- 28. Tài khoản AndroidManager authToken và OAuth
- 29. Có bao nhiêu LINQ?
- 30. Bao nhiêu NumPy và SciPy là trong C?
Ngay cả khi access token được gửi qua https, vì nó là một đoạn, nó sẽ không thể cho các máy chủ hop trung gian trong mạng để đánh hơi nó. – Karthik
Ý của bạn là ngay cả khi được gửi qua http? – codeprogression
Nếu chúng tôi giả định Oauth Server là X và máy khách yêu cầu quyền truy cập là Y. Sau đó, ngay cả khi mã thông báo truy cập được gửi dưới dạng phân đoạn trong https, từ X sang Y, các máy trung gian trong mạng www từ X đến Y có thể đọc mã thông báo truy cập này (tức là: nghe lén trên tham số truy vấn https/phân đoạn là, dễ dàng như nghe trộm một tham số truy vấn http/phân đoạn). Chỉ dữ liệu trong cơ thể HTTP được mã hóa trong trường hợp https. – Karthik