Thứ Ba, 18 tháng 10, 2011

P5: Tìm hiểu về bảo mật trên Android - Sử dụng các quyền hạn

V. Sử dụng các quyền hạn

Các quyền hạn là một cơ chế bảo mật của nền tảng Android để cho phép hoặc hạn chế ứng dụng truy cập đến các API và các tài nguyên bị hạn chế.

Theo mặc định, các ứng dụng Android không được cấp các quyền hạn nào, làm cho chúng an toàn bằng cách không cho phép chúng truy cập vào các API được bảo vệ hoặc các tài nguyên trên thiết bị. Ứng dụng phải yêu cầu các quyền hạn thông qua tệp bản kê và người dùng cấp hoặc không cấp các quyền hạn trong khi cài đặt.

Android định nghĩa một danh sách dài các quyền hạn qua bản kê, bảo vệ các khía cạnh khác nhau của hệ thống hoặc các ứng dụng khác. Để yêu cầu cấp quyền hạn, hãy khai báo một thuộc tính <user-permission> trong tệp bản kê: 
<uses-permission android:name="string" />

Ở đây android:name xác định tên của quyền hạn này.

Để biết một danh sách tất cả các quyền hạn qua bản kê do Android định nghĩa, hãy xem trang Manifest.permisson.  

Liệt kê 2 là một ví dụ của một tệp bản kê yêu cầu cấp quyền sử dụng Internet và quyền ghi vào bộ nhớ ngoài:

Liệt kê 2. Khai báo (yêu cầu cấp) một quyền hạn

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
android:versionCode="1"
android:versionName="1.0"
package="com.cenriqueortiz.tutorials.datastore"
android:installLocation="auto">

<application
:
:
:
</application>

<uses-permission
android:name="android.permission.INTERNET"/>
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
</manifest>

Các ứng dụng có thể định nghĩa các quyền hạn tùy chỉnh riêng của mình để bảo vệ tài nguyên của ứng dụng. 

Các ứng dụng khác muốn truy cập vào tài nguyên được bảo vệ của một ứng dụng phải yêu cầu có các quyền hạn thích hợp thông qua tệp bản kê riêng của mình. Liệt kê 3 chỉ ra một ví dụ về cách định nghĩa các quyền hạn. 

Liệt kê 3. Khai báo một quyền hạn tùy chỉnh

<permission
xmlns:android="http://schemas.android.com/apk/res/android"
android:name="com.cenriqueortiz.android.ACCESS_FRIENDS_LIST"
android:description="@string/permission_description"
android:label="@string/permission_label"
android:protectionLevel="normal"
>
</permission>

Trong Liệt kê 3, một quyền hạn khách hàng được định nghĩa bằng cách xác định các thuộc tính tối thiểu name (tên), description (mô tả), label (nhãn) và protectionLevel (mức bảo vệ). Các thuộc tính khác có thể được định nghĩa thêm, nhưng chúng không được trình bày ở đây.

Một thuộc tính cần quan tâm đặc biệt là android:protectionLevel, biểu thị phương thức mà hệ thống phải tuân theo khi cấp (hoặc không cấp) một quyền hạn cho một ứng dụng đang yêu cầu.

Các mức bảo vệ gồm có: 

  • normal (bình thường), nghĩa là tự động cấp các quyền này (mặc dù người sử dụng luôn có thể xem xét lại trước khi cài đặt), việc cấp các quyền hạn dựa trên chữ ký (có nghĩa là, nếu ứng dụng đang yêu cầu đã được ký với cùng một chứng chỉ).
  • dangerous (nguy hiểm), biểu thị các quyền hạn truy cập đến dữ liệu riêng hoặc có tác động tiêu cực tiềm năng khác. 

Để biết thêm thông tin về thuộc tính bản kê <permission> hãy xem trang <permission> (xem phần Tài nguyên).

Các ứng dụng có thể hạn chế truy cập vào ứng dụng và các thành phần hệ thống mà nó sử dụng như là: Activity (Hoạt động), Service (Dịch vụ), Content Provider (Nhà cung cấp nội dung) và Broadcast Receiver (Máy thu quảng bá). 

Sự hạn chế này dễ dàng thực hiện bằng cách định nghĩa thuộc tính android:permission như trong Liệt kê 4. Mức bảo vệ này để cho ứng dụng đó cho phép hoặc hạn chế các ứng dụng khác truy cập vào tài nguyên hệ thống. 

Liệt kê 4. Định nghĩa một quyền hạn cho một hoạt động

<activity 
android:name=".FriendsListActivity"
android:label="Friends List">
android:permission="com.cenriqueortiz.android.ACCESS_FRIENDS_LIST"
<intent-filter>
:
:
</intent-filter>
</activity>

Source: Ibm.com

Không có nhận xét nào:

Đăng nhận xét