2012-09-17 19 views
9

Tôi cần lưu trữ một số thông tin nhạy cảm trong một ứng dụng Android. Nếu tôi đặt nó trong một tập tin tài nguyên, nó xuất hiện rằng nó là tầm thường cho một ứng dụng khác để có thể duyệt và đọc tập tin đó chỉ đơn giản bằng cách sử dụng PackageManager.getResourcesForApplication().Nơi lưu trữ thông tin toàn cầu nhạy cảm như các khóa API trong ứng dụng Android?

Địa điểm chính xác để đặt thông tin như thế nào mà chúng tôi không muốn mọi người có thể dễ dàng tìm được thông tin?

Nó có nằm trong tệp java đã biên dịch không? Hay là lớp học cũng dễ đọc? Ngoài ra, nếu chúng ở trong các tệp java, có thể tham chiếu chúng từ các tệp XML cần chúng (ví dụ: đối với khóa api bản đồ google) không?

+3

Mọi thứ bạn phân phối trong gói ứng dụng đều có thể đọc được. Chỉ cần đặt nó vào tài nguyên/tệp java miễn là nó là những thứ không có giá trị như khóa api. Nếu đó là số thẻ tín dụng của bạn thì không được. Khóa api của bản đồ chỉ hoạt động trong XML IIRC – zapl

+2

Trên trang ProGuard mà chúng đề cập đến [DexGuard] (http://www.saikoa.com/dexguard) cho phép obfuscation tốt hơn cho các chuỗi tĩnh (các khóa API). Nếu ném vào một số tiền không phải là một vấn đề kiểm tra những gì họ cung cấp có thể là giá trị rắc rối. – harism

Trả lời

9

APK của bạn sẽ được truy xuất từ ​​thiết bị và bị tách rời. (Sau khi tất cả, một số thiết bị được bắt nguồn từ.) Dù bạn hardcode ở đó, không có vấn đề ở đâu, sẽ được tìm thấy và trích xuất. Tất nhiên, nếu tiềm năng tăng đáng kể nỗ lực. Nếu không, an ninh bởi sự tối tăm, chẳng hạn như obfuscation, có thể là con đường để đi.

Xử lý bí mật thực sự phải dựa trên một số loại đầu vào, đáng chú ý là mật khẩu.

Hạnh phúc, các khóa API, nếu được sử dụng như chúng được cho là, không nhất thiết phải là một bí mật thực sự.

-3

nếu bạn chỉ muốn từ chối quyền truy cập vào dữ liệu của mình từ các ứng dụng khác, bạn có thể sử dụng SharedPreferences. Chỉ cần sử dụng Contex.getSharedPreferences (/ tên tệp prefs /, Context.MODE_PRIVATE); Theo tài liệu MODE_PRIVATE nghĩa là tệp được tạo chỉ có thể được truy cập bằng ứng dụng gọi điện (hoặc tất cả các ứng dụng chia sẻ cùng một ID người dùng).

+0

Điều này không trả lời câu hỏi đang được hỏi. Người hỏi lo ngại về tài sản được phân phối cùng với ứng dụng, không phải với việc lưu trữ thông tin được xác định sau khi cài đặt. Ví dụ, một tệp được phân phối trong 'res/raw /'. – Dallas

4

Google có một số khuyến nghị tốt về điều này dưới billing. Tóm lại: sử dụng máy chủ từ xa, làm xáo trộn và sử dụng các nonces an toàn ngẫu nhiên. Không có gì là an toàn trong gói ứng dụng của bạn vì nó luôn có thể được thiết kế ngược và làm cho obfuscation chỉ hoạt động chống lại các cuộc tấn công đơn giản.

+2

Nếu bạn downvote xin vui lòng xác định lý do tại sao. Cảm ơn – Warpzit

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