Nơi tốt nhất để lưu trữ khóa API, Khóa mã hóa cơ sở dữ liệu, v.v ... trong mã ứng dụng để không ai có thể lấy mã bằng cách giải mã mã? Tôi đã sử dụng proguard để làm xáo trộn mã nhưng nó không hoạt động trên Strings.Nơi tốt nhất để lưu trữ khóa bí mật trong ứng dụng Android là gì?
Trả lời
Không có cách nào để lưu trữ chúng trong ứng dụng. Ứng dụng có thể được giải mã hoặc thực hiện trên thiết bị đã được sửa đổi, cung cấp thêm quyền truy cập vào bộ nhớ của ứng dụng hoặc ứng dụng có thể được sửa đổi bởi kẻ tấn công để thêm ghi nhật ký mạng hoặc lưu trữ cơ sở dữ liệu/lưu trữ, v.v.
Để xác thực máy chủ, ứng dụng của bạn có thể có được mã thông báo xác thực (hoặc tương tự) bằng cách trao đổi thông tin đăng nhập do người dùng nhập cho mã thông báo xác thực hoặc bằng cách lấy các mã thông báo xác thực từ AccountManager hoặc các API tương tự. Bạn cũng có thể sử dụng API SafetyNet Attest (https://developer.android.com/training/safetynet/index.html) để chứng thực cho các máy chủ của mình rằng ứng dụng của bạn đã được ký bằng khóa ký đang tạo yêu cầu.
Để mã hóa cơ sở dữ liệu, ứng dụng có thể tạo khóa mã hóa ngẫu nhiên trên thiết bị, được liên kết với thông tin đăng nhập do người dùng nhập hoặc được lưu trữ trong Android Keystore hoặc đơn giản dựa vào bảo vệ do Android cung cấp cho ứng dụng. Nó phụ thuộc vào mô hình mối đe dọa của bạn (ví dụ, tại sao bạn nghĩ rằng bạn cần mã hóa cơ sở dữ liệu?)
Làm cách nào để ngăn ứng dụng lừa đảo mạo danh ứng dụng của bạn khi nói chuyện với máy chủ? – pete
Máy chủ của bạn có thể yêu cầu tất cả các yêu cầu (hoặc yêu cầu đăng nhập hoặc tương tự) chứa mã xác nhận/xác nhận của SafetyNet. Sau đó, máy chủ sẽ xác minh rằng (1) mã xác thực/xác nhận thực sự được cơ sở hạ tầng SafetyNet Attest của Google cấp và (2) trích xuất tên gói + ký xác nhận của ứng dụng từ mã thông báo/xác nhận và kiểm tra xem chúng có khớp với ứng dụng của bạn hay không. Về bản chất, máy chủ của bạn sẽ tin tưởng rằng rất khó để đánh lừa cơ sở hạ tầng SafetyNet Attest (cả phía máy khách lẫn phía máy chủ). –
- 1. Thực hành tốt nhất để lưu trữ khóa bí mật
- 2. Nơi lưu trữ các khóa bí mật DJANGO
- 3. Cách được giới thiệu để lưu trữ khóa API và bí mật trong ứng dụng UWP là gì?
- 4. Đâu là nơi tốt nhất để lưu trữ ảnh toàn cầu trong ứng dụng Rails?
- 5. Cách tốt nhất để lưu trữ mật khẩu hoặc khóa riêng tư trên máy chủ lưu trữ web là gì?
- 6. Đâu là nơi tốt nhất để lưu trữ hình ảnh cầu vồng (auth token) trong Android
- 7. Cách tốt nhất để lưu trữ URL hoặc miền URL, trong ứng dụng AngularJS là gì?
- 8. Nơi tốt nhất để lưu trữ các hằng số trong ứng dụng iOS ở đâu?
- 9. GAE: các phương pháp hay nhất để lưu trữ khóa bí mật?
- 10. Trường tốt nhất để lưu trữ ngày sinh là gì?
- 11. Nơi cất trữ băm, muối, chìa khóa trong các ứng dụng Desktop
- 12. Cách tốt nhất để lưu trữ ứng dụng node.js trên Windows là gì?
- 13. Lưu trữ các bí mật sản xuất trong ASP.NET Core
- 14. Cơ chế tốt nhất để lưu trữ cài đặt xác thực trong ứng dụng WinForms là gì
- 15. Cách tốt nhất để lưu trữ chuỗi kết nối trong .NET DLLs là gì?
- 16. Thực tiễn tốt nhất để sử dụng lưu trữ cục bộ luồng trong .NET là gì?
- 17. Giải pháp chống hack cho khóa bí mật trong ứng dụng Android?
- 18. Thực hành tốt nhất về mật mã để lưu trữ mật khẩu trong Node
- 19. Lưu trữ khóa trong Android
- 20. Lưu trữ các khóa bí mật quan trọng trong các tập tin php
- 21. Cách lưu trữ mật khẩu trên Android
- 22. cách tốt nhất có thể để muối và lưu trữ muối là gì?
- 23. Nơi tốt nhất cho logic nghiệp vụ trong ASP.NET MVC khi sử dụng kho lưu trữ là gì?
- 24. Cách tốt nhất để làm "cài đặt ứng dụng" trong Android là gì?
- 25. Phương pháp tốt nhất để sử dụng/lưu trữ khóa mã hóa trong MySQL
- 26. Cách tốt nhất để đọc bí mật phiên Rails là gì?
- 27. Cách tốt nhất để lưu trữ một URL Slug duy nhất là gì?
- 28. Đâu là nơi tốt nhất để chỉ định kho lưu trữ maven, pom.xml hoặc settings.xml?
- 29. Nơi lưu trữ các khóa tùy chọn Android?
- 30. Nơi bí danh 'được lưu trữ trong Ubuntu 10.04
Câu hỏi này đã được [yêu cầu] (http://stackoverflow.com/questions/14570989/best-practice-for-storing -private-api-keys-in-android) – Dmitriy
Có thể trùng lặp [Thực tiễn tốt nhất để lưu trữ khóa API riêng tư trong Android] (https://stackoverflow.com/questions/14570989/best-practice-for-storing-private-api -keys-in-android) – Suhaib