2012-01-16 30 views
6

Tôi đang phát triển một ứng dụng đa nền tảng hiện có sử dụng Twitter, bao gồm cả xác thực qua oAuth.Những rủi ro khi phơi bày khóa oauth không bí mật là gì? Có cách giải quyết nào không?

Tôi đã xem rất nhiều ứng dụng hiện có và hầu hết các ứng dụng này dường như nhúng cả id và khóa bí mật bên trong ứng dụng.

Rủi ro của việc này là gì? Có phải chỉ ai đó có thể "tải xuống và kiểm tra" nhị phân ứng dụng của bạn để trích xuất khóa của bạn - và sau đó có thể giả vờ là ứng dụng của bạn (kiểu lừa đảo)? Hoặc có những rủi ro khác?


Ngoài những rủi ro, có cách giải quyết hoặc giải pháp nào mà mọi người biết không?

Một giải pháp mà tôi đã thấy là một số người giải quyết vấn đề này bằng cách định tuyến tất cả các cuộc gọi qua trang web của riêng họ - ví dụ: OAuth Twitter with only Consumer Key (not use Consumer Secret) on iPhone and android - nhưng điều này có vẻ khá chậm và tốn kém - tôi không muốn định tuyến tất cả các cuộc gọi qua dịch vụ web của riêng mình nếu tôi có thể tránh được (hoặc tôi hiểu nhầm giải pháp - chỉ là xác thực qua trang web?)

+0

Tôi hiểu mối lo ngại của bạn, nhưng trừ khi ứng dụng trở nên lớn và phổ biến, tôi thực sự không nghĩ đó là vấn đề. Và nếu họ làm kỹ sư đảo ngược ứng dụng của bạn, bạn chỉ cần đặt trong các điều khoản đó là bất hợp pháp và kiện họ :) – f2lollpll

Trả lời

1

Mối nguy hiểm thực sự duy nhất có vẻ là ai đó có thể mạo danh Ứng dụng của bạn và khiến Twitter bị cấm, sau đó bạn phải đưa người dùng đến một khóa mới.

Bài nói chuyện Google I/O này có một số gợi ý về làm xáo trộn mã để làm cho kỹ sư đảo ngược khó hơn. http://www.google.com/events/io/2011/sessions/evading-pirates-and-stopping-vampires-using-license-verification-library-in-app-billing-and-app-engine.html

1

Giải pháp thay thế mà tôi đưa ra là tìm khóa bí mật từ máy chủ web của bạn (qua SSL) bằng cách sử dụng cuộc gọi dịch vụ web được xác thực. Bạn có thể lưu nó trong ứng dụng khách (chỉ trong bộ nhớ). Sử dụng nó khi bạn cần mà không cần kết nối lại với máy chủ.

Nhược điểm tôi thấy là ai đó có thể vẫn chạy ứng dụng của bạn dưới trình gỡ rối và kiểm tra bộ nhớ và lấy khóa.

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