2011-11-17 21 views
13

Tôi đang viết 1) một ứng dụng lưu trữ tên người dùng và mật khẩu trong Trình quản lý tài khoản và 2) một ứng dụng Dịch vụ nền riêng biệt truy cập các thông tin đăng nhập đó để đăng nhập vào máy chủ của tôi, v.v. có thể gọi AccountManager.getPassword (tài khoản) từ Dịch vụ (ứng dụng 2) để truy cập loại tài khoản tôi đã thêm vào Trình quản lý tài khoản bằng ứng dụng khác (ứng dụng 1).Điều gì bảo vệ các mật khẩu Android AccountManager không bị đọc bởi các ứng dụng khác?

Do đó, tôi bắt đầu tự hỏi điều gì sẽ dừng ứng dụng độc hại tùy ý từ 1) bao gồm các trường trong tệp kê khai để có quyền truy cập Quản lý tài khoản và sau đó 2) từ lặp qua tất cả các tài khoản của một loại cụ thể và gọi mAccountManger.getPassword (tài khoản) trên chúng. Tôi biết rằng trong quá trình cài đặt, một hộp thoại bật lên với tất cả các quyền mà ứng dụng yêu cầu sử dụng, nhưng tôi không nghĩ rằng chúng tôi có thể dựa vào người dùng trung bình để từ chối ứng dụng vì ứng dụng yêu cầu quyền đáng ngờ.

Có cách nào để ngăn getPassword được gọi trên một loại tài khoản không? Có cách nào để bảo vệ tài khoản trong Trình quản lý tài khoản khỏi các ứng dụng đã tự cung cấp nhiều quyền tài khoản không?

Trả lời

9

Bảo vệ dữ liệu tài khoản dựa trên id người dùng Linux (UID) của quy trình đưa ra yêu cầu. (Xem Security and Permissions trong hướng dẫn.) Mỗi ​​tài khoản được liên kết với trình xác thực tài khoản (có UID) và quá trình gọi getPassword (hoặc một số phương thức khác) phải có cùng UID làm trình xác thực.

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