2011-12-15 25 views
24

Nhìn vào Twitter OAuth Libraries, tôi thấy ghi chú này:Làm cách nào để không thể tiết lộ khóa bí mật của bạn với thư viện Javascript OAuth?

Hãy thận trọng khi sử dụng JavaScript với OAuth. Đừng để chìa khóa của bạn.

Sau đó, xem jsOAuth examples, tôi nhận thấy rằng các phím được hiển thị trong mã.

Vì vậy, câu hỏi của tôi là: Làm cách nào để không thể phơi chìa khóa khi bạn sử dụng thư viện OAuth trong Javascript?

Cảm ơn.

CẬP NHẬT: Ok, có thể jsOAuth không phải là thư viện phù hợp để sử dụng, nhưng làm cách nào để xác thực với OAuth trên trang web Javascript đầy đủ?

+0

Thay vì thêm câu hỏi mới vào chủ đề này, bạn nên đánh dấu câu hỏi đó là đã giải quyết và đăng câu hỏi mới, đặc biệt là các câu hỏi không giống nhau. Câu trả lời cho câu hỏi tiếp theo của bạn có sẵn tại đây: [An toàn OAuth trong Javascript] (http://stackoverflow.com/questions/6144826/secure-oauth-in-javascript) –

+0

Tiêu đề của câu hỏi của tôi không thay đổi. Có thể bạn muốn tôi xóa nốt jsOAuth – rico

+0

Chấp nhận câu trả lời của refp rồi ... :) –

Trả lời

10

Như đã nói trong tài liệu được liên kết bởi bạn:

Được viết bằng JavaScript, jsOAuth mong muốn trở thành một đầy đủ tính năng mã nguồn mở OAuth thư viện để sử dụng trong phần mềm Adobe AIR, Appcelerator Titanium và PhoneGap. Trong thực tế, bất cứ nơi nào mà javascript có thể được sử dụng và có XMLHttpRequests miền chéo. Vì lý do bảo mật, jsOAuth không chạy trong trình duyệt. Trình duyệt chỉ được đề cập ở đây để chạy bộ thử nghiệm. Nếu bạn cần jsOAuth trong trình duyệt, hãy viết phần mở rộng.


Một câu trả lời tốt cho câu hỏi được trang bị hiện có sẵn ở đây:

5

Cách duy nhất thực sự hợp lý, ngay bây giờ, để làm OAuth 1 trong trình duyệt, là định tuyến các cuộc gọi API qua máy chủ của bạn.

Chỉ đơn giản là không có cách nào, theo như tôi đã hiểu nó, xung quanh này. Nếu bạn thực hiện lệnh gọi OAuth 1.0a thông qua JavaScript từ trình duyệt -> Bạn sẽ CÓ để tiết lộ bí mật mã thông báo bí mật và mật khẩu người dùng của mình, cho ít nhất người dùng cuối.

Bạn không thể lưu trữ những thông tin quan trọng trong:

  • một cookie, người dùng có thể tìm thấy chúng.
  • lưu trữ cục bộ, người dùng có thể tìm thấy chúng (tốt hơn cookie mặc dù, vì nó không đòi hỏi phải gửi cookie qua lại tất cả thời gian qua HTTP)
  • trong javascript, người dùng có thể tìm thấy chúng (mặc dù điều này có thể đặt cược tốt nhất của bạn vì nó dễ che khuất hơn).

Nếu đó chỉ là bí mật mã thông báo truy cập đã được tiếp xúc với người dùng cuối, điều đó có thể chịu đựng được - vì thực tế là họ đã xác thực ứng dụng của bạn. Nhưng việc mất bí mật người tiêu dùng của bạn thực sự không quá nóng, điều đó có nghĩa là ứng dụng của bạn đủ điều kiện nhận dạng trộm cắp danh tính. I. một người khác có thể viết một ứng dụng tuyên bố là ứng dụng của bạn.

Thậm chí nếu bạn làm cho nó hoạt động an toàn trong trình duyệt, bạn bị cản trở bởi các khối bảo mật tên miền chéo.

2

Bạn cũng có thể tạo một tập lệnh gửi tất cả các giá trị và thông số cần thiết đến máy chủ để thực hiện việc ký kết.

URL đã ký sau đó có thể được gửi lại cho khách hàng (trình duyệt) để thực hiện yêu cầu thực tế.

Tôi đã triển khai OAuth 1.0a trên API Twitter theo cách đó bằng cách sử dụng yêu cầu jsonp. Lợi ích của việc này là cơ thể phản hồi không được chuyển tiếp qua máy chủ của bạn, tiết kiệm băng thông.

Bằng cách đó, bạn cũng có thể có cookie và ăn nó.

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