安卓應用安全指南5.5.2處理隱私資料規則書
5.5.2 處理隱私資料 規則書
原書:Android Application Secure Design/Secure Coding Guidebook
譯者:飛龍
處理隱私策略時,遵循以下規則:
5.5.2.1 將使用者資料的傳輸限制為最低需求(必需)
將使用資料傳輸到外部伺服器或其他目標時,將傳輸限制在提供服務的最低需求。 特別是,你應該設計為,應用只能訪問這些使用者資料,使用者可以根據應用描述來想象它們的使用目的。
例如,使用者可以想象,它是個警報應用,但不能訪問位置資料。另一方面,如果警報應用可以根據使用者的位置發出警報,並將其功能寫入應用的描述中,則應用可以訪問位置資料。
在只需要在應用中訪問資訊的情況下,避免將資訊傳輸到外部,並採取其他措施來減少無意中洩漏使用者資料的可能性。
5.5.2.2 在首次載入(或應用更新)時,獲得廣泛同意來傳輸需要特別細緻處理或使用者可能難以更改的使用者資料(必需)
如果應用向外部伺服器,傳輸使用者可能難以更改的任何使用者資料,或需要特別細緻處理的任何使用者資料,則應用必須在使用者開始使用之前,獲得使用者的預先同意(選擇性加入) – 通知使用者哪些型別的資訊將被髮送到伺服器,以及是否會涉及任何第三方廠商。 更具體地說,首次啟動時,應用應顯示其應用隱私政策並確認該使用者已閱讀並同意。 此外,無論何時應用更新,通過將新型別的使用者資料傳輸到外部伺服器,它都必須再次確認使用者已經閱讀並同意這些更改。 如果使用者不同意,應用應該終止或以其他方式採取措施,來確保所有需要傳輸資料的功能都被禁用。
這些步驟可以確保,使用者瞭解他們在使用應用時如何處理資料,為使用者提供安全感並增強他們對應用的信任。
MainActivity.java
protected void onStart() {
super.onStart();
// (some portions omitted)
if (privacyPolicyAgreed <= VERSION_TO_SHOW_COMPREHENSIVE_AGREEMENT_ANEW) {
// *** POINT *** On first launch (or application update), obtain broad consent to transmit user data that will be handled by the application.
// When the application is updated, it is only necessary to renew the user’s grant of broad consent if the updated application will handle new types of user data.
ConfirmFragment dialog = ConfirmFragment.newInstance(
R.string.privacyPolicy, R.string.agreePrivacyPolicy,
DIALOG_TYPE_COMPREHENSIVE_AGREEMENT);
dialog.setDialogListener(this);
FragmentManager fragmentManager = getSupportFragmentManager();
dialog.show(fragmentManager, "dialog");
}
5.5.2.3 在傳輸需要特殊處理的使用者資料之前獲得特定的同意(必需)
向外部伺服器傳輸任何需要特別細緻處理的使用者資料時,除了需要獲得一般同意之外,應用必須獲得使用者對每種這類使用者資料(或涉及傳輸使用者資料的每個功能)的預先同意(選擇性加入)。 如果使用者不同意,則應用不得將相應的資料傳送到外部伺服器。 這確保使用者可以更全面地瞭解應用的功能(及其提供的服務)和使用者對其授予一般同意的,使用者資料的傳輸之間的關係;同時,應用提廠商可以基於更精確的決策,預計獲得使用者的同意。
MainActivity.java
public void onSendToServer(View view) {
// *** POINT *** Obtain specific consent before transmitting user data that requires particularly delicate handling.
ConfirmFragment dialog = ConfirmFragment.newInstance(R.string.sendLocation, R.string.cofi
rmSendLocation, DIALOG_TYPE_PRE_CONFIRMATION);
dialog.setDialogListener(this);
FragmentManager fragmentManager = getSupportFragmentManager();
dialog.show(fragmentManager, "dialog");
}
5.5.2.4 向使用者提供檢視應用隱私策略的方法(必需)
一般來說,Android 應用市場將提供應用隱私策略的連結,供使用者在選擇安裝相應的應用之前進行復查。 除了支援此功能之外,應用還需要提供一些方法,使用者在裝置上安裝應用後,可以檢視應用隱私策略。 特別重要的是提供一些方法,使用者可以輕易複查應用隱私政策。在同意的情況下,將使用者資料傳輸到外部伺服器來協助使用者作出適當決定。
MainActivity.java
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_show_pp:
// *** POINT *** Provide methods by which the user can review the application privacy policy.
Intent intent = new Intent();
intent.setClass(this, WebViewAssetsActivity.class);
startActivity(intent);
return true;
5.5.2.5 在素材資料夾中放置應用隱私策略的摘要版本(推薦)
將應用隱私策略的摘要版本放在素材資料夾中,來確保使用者可以按需對其進行復查,這是一個不錯的主意。 確保素材資料夾中存在應用隱私策略,不僅可以讓使用者隨時輕鬆訪問它,還可以避免使用者看到由惡意第三方準備的應用隱私策略的偽造或損壞版本的風險。
5.5.2.6 提供可以刪除傳輸的資料的方法,以及可以通過使用者操作停止資料傳輸的方法(推薦)
提供根據使用者需要,刪除傳輸到外部伺服器的使用者資料的方法,是一個好主意。與之相似,在應用本身已經在裝置記憶體儲使用者資料(或其副本)的情況下,向使用者提供用於刪除該資料的方法是一個好主意。而且,提供可以根據使用者要求停止使用者資料傳送的方法,是一個好主意。
這一規則(建議)由歐盟推行的“被遺忘權”編纂而成;更普遍的是,在未來,各種提案將要求進一步加強使用者保護其資料的權利,這看起來很明顯。為此在這些指導方針中,我們建議提供刪除使用者資料的方法,除非有一些具體原因不能這樣做。並且,停止資料傳輸,主要由瀏覽器的對應觀點“不追蹤(否定追蹤)”定義。
MainActivity.java
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
(some portions omitted)
case R.id.action_del_id:
// *** POINT *** Provide methods by which transmitted data can be deleted by user
operations.
new SendDataAsyncTack().execute(DEL_ID_URI, UserId);
return true;
}
5.5.2.7 從 UUID 和 Cookie 中分離裝置特定的 ID(推薦)
不應通過與使用者資料繫結的方式傳輸 IMEI 和其他裝置特定 ID。 事實上,如果一個裝置特定的 ID 和一段使用者資料被捆綁在一起,併發布或洩露給公眾 – 即使只有一次 – 隨後也不可能改變該裝置特定的 ID,因此對於把 ID 和使用者資料繫結的伺服器來說,這是不可能的(或至少 很難)。 在這種情況下,最好使用 UUID 或 cookie(即每次基於隨機數重新生成的變數 ID),與使用者資料一起傳輸時代替裝置特定的 ID。 這允許實現上面討論的“被遺忘的權利”的概念。
MainActivity.java
@Override
protected String doInBackground(String... params) {
// *** POINT *** Use UUIDs or cookies to keep track of user data
// In this sample we use an ID generated on the server side
SharedPreferences sp = getSharedPreferences(PRIVACY_POLICY_PREF_NAME, MODE_PRIVATE);
UserId = sp.getString(ID_KEY, null);
if (UserId == null) {
// No token in SharedPreferences; fetch ID from server
try {
UserId = NetworkUtil.getCookie(GET_ID_URI, "", "id");
} catch (IOException e) {
// Catch exceptions such as certification errors
extMessage = e.toString();
}
// Store the fetched ID in SharedPreferences
sp.edit().putString(ID_KEY, UserId).commit();
}
return UserId;
}
5.5.2.8 如果你只在裝置內使用使用者資料,請通知使用者,資料不會傳輸到外部(推薦)
即使在使用者資料只在使用者裝置中臨時訪問的情況下,向使用者傳達這一事實也是一個好主意,來確保使用者充分和透明地理解了應用行為。 更具體來說,應該告知使用者,應用訪問的使用者資料只在裝置內用於特定的目的,不會被儲存或傳送。 將此內容傳達給使用者的可能方法,包括在應用市場上的應用描述中指定它。 僅在裝置中臨時使用的資訊,不需要在應用隱私策略中討論。
相關文章
- 安卓應用安全指南4.5.2使用SQLite規則書安卓SQLite
- 安卓應用安全指南4.1.2建立/使用活動規則書安卓
- 安卓應用安全指南4.6.1處理檔案示例程式碼安卓
- 安卓應用安全指南翻譯完成安卓
- 安卓應用安全指南4.8輸出到LogCat安卓GC
- 安卓應用安全指南六、困難問題安卓
- 保護資料安全與隱私,讓企業資料跨境安全合規
- 騰訊安全釋出《APP隱私合規白皮書》APP
- 資料的集合處理,有哪些規則?
- 安卓應用安全指南 5.6.1 密碼學 示例程式碼安卓密碼學
- 安卓應用安全指南4.7使用可瀏覽的意圖安卓
- Camera 360應用隱私資料洩露的分析
- 大資料安全與隱私保護大資料
- 安卓應用安全指南4.1.1建立/使用活動示例程式碼安卓
- 世界盃所使用的應用程式帶來資料安全和隱私噩夢
- 安卓應用安全指南4.3.1建立/使用內容供應器示例程式碼安卓
- oracle資料隱式轉換規則Oracle
- 如何全面保護AI資料隱私和資料安全?AI
- 安卓綠色聯盟安全標準1.0到2.0,讓使用者隱私更安全安卓
- 在建立應用程式時,將資料隱私和合規性放在首位有多重要?
- 銘說 | 淺論資料安全中的隱私計算方法之差分隱私
- 本應用的隱私政策
- 應用隱私政策協議協議
- HarmonyOS:應用隱私保護
- 用Compute Shader處理影像資料後在安卓機上不能正常顯示渲染紋理安卓
- 安卓應用安全指南5.4.1通過HTTPS的通訊示例程式碼安卓HTTP
- 隱私計算在智慧城市建設中的應用:平衡公共安全與個人隱私
- 處理XML資料應用實踐XML
- [踩樓贈書] 新書上市!《隱私計算》——系統揭秘隱私計算,全面駕馭資料要素新書
- 打造全鏈路資料隱私合規平臺
- 隱私計算:保護資料隱私的利器
- 安卓應用安全指南4.2.3建立/使用廣播接收器高階話題安卓
- RSA Security:2019年資料隱私和安全報告
- 大資料“超能力”:資料安全和隱私該如何保障?大資料
- 注重隱私的安卓作業系統替代品:CalyxOS安卓作業系統
- 機器人工程相關安卓應用資料2018機器人安卓
- 安永&賽博:2021年全球資料合規與隱私科技發展報告
- 隱私計算助力資料的安全流通與共享