2013-06-12 19 views
5

Tôi đang làm việc trên ứng dụng web tập trung vào API với phương thức ủy quyền tùy chỉnh bao gồm xây dựng chuỗi dựa trên phương thức yêu cầu, URL, thông số, khóa API công khai và được mã hóa bằng khóa API riêng tư. Điều này hoạt động tốt ở phía máy chủ, nhưng ở phía máy khách, khóa API riêng (và phương thức ủy quyền) sẽ dễ bị tổn thương. Tôi đã dành một giờ để tìm kiếm một cách tốt nhất để bảo mật khóa API này và phương pháp tốt nhất tôi có thể tìm được là ủy quyền thông qua máy chủ của tôi, nhưng tôi vẫn không chắc chắn 100% về điều này.Bảo mật khóa API trên máy khách (JavaScript, Android, iOS, v.v.)

Trước hết, tôi có nên lo lắng không? Tôi muốn bảo mật ưu tiên trong ứng dụng web của mình, nhưng bất kỳ thứ gì sẽ xử lý việc sửa đổi tài khoản của người dùng sẽ cần một mã thông báo được mã hóa tạm thời để cho phép yêu cầu (ngoài mã băm HMAC).

Hiểu biết của tôi từ proxy là bạn sẽ yêu cầu máy chủ của bạn, sau đó mã hóa bằng khóa riêng và trả lại thông tin..nhưng máy chủ xác thực rằng yêu cầu đến từ nguồn có API hợp lệ như thế nào Chìa khóa?

Có ai có thể cung cấp bất kỳ thông tin chi tiết nào về những gì tôi nên làm không? Tôi cảm thấy như thế này có khả năng có thể là một lỗ hổng cho bất kỳ mã phía máy khách nào bao gồm JavaScript, iOS và Android.

+1

Vui lòng [không sử dụng chữ ký hoặc dòng giới thiệu trong bài đăng của bạn] (http://stackoverflow.com/faq#signatures). – meagar

+0

theo cách nào mà khóa riêng tư có thể bị tổn thương? bạn phải đưa chìa khóa cho khách hàng hoặc nó sẽ không hoạt động ... – dandavis

+0

Hiện tại, khách hàng sẽ chỉ là ứng dụng chính thức của tôi (web và di động). Tuy nhiên, khóa riêng và phương thức ủy quyền sẽ hiển thị trong nguồn JavaScript để có thể thực hiện bất kỳ cuộc gọi AJAX nào trên trang web. – Sam

Trả lời

4

Bạn không bao giờ có thể tin tưởng khách hàng. Ngay cả khi bạn làm xáo trộn, ai đó vẫn có thể đoán ra. Ví dụ, một đối thủ có thể đảo ngược kỹ thuật thuật toán obfuscation, nhìn vào bộ nhớ thiết bị, hoặc thậm chí nắm bắt những gì được gửi qua dây.

Tuy nhiên, bạn vẫn có thể tạo ứng dụng bảo mật bằng cách thực thi bảo mật ở phía máy chủ. Ví dụ: người dùng cần phải được xác thực để thực hiện thành công các yêu cầu API đặc quyền.

Ngoài ra, bạn có thể thực thi việc sử dụng API ở phía máy chủ, cho dù bằng xác thực đầu vào, giới hạn tốc độ hoặc theo dõi địa chỉ IP.

+0

Mỗi khi tôi trở lại điều này bởi vì ai đó đã bỏ phiếu cho câu hỏi, tôi thấy "bạn không bao giờ có thể tin tưởng khách hàng." Tôi đã trở thành một fan hâm mộ lớn của tâm lý này và nó thậm chí còn giúp hợp lý hóa việc tạo API (tức là không cần phải xác nhận mật khẩu khi đăng ký vì khách hàng chỉ có thể giả mạo đường dẫn này). – Sam

+0

@sam Xác nhận là dành cho người dùng để đảm bảo họ đã nhập những gì họ cho là họ đã nhập. Nó ít có khả năng nhập nhầm mật khẩu hai lần sai. –

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