成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Android 端權限隱私的合規化處理實踐

移動開發 Android
權限隱私的發展趨勢只會越來越嚴格和規范。在日常的客戶端開發當中,我們就需要時刻持有隱私安全的意識,讓自己站在用戶的角度上合理的保證隱私安全。

[[419042]]

是什么

對客戶端而言,權限隱私可分為權限和隱私兩個大的方面。

  • 權限為用戶通過app內彈窗設置或者手機設置內對應app的權限設置方式給予對應app相應的權限,如電話權限,定位權限,相機權限等,本文主要集中介紹隱私相關的權限部分。

  • 隱私為app使用過程中與用戶個人相關的個人信息,如所在位置,Mac地址,設備id等。就Android端而言,多數隱私信息需要對應授權后才能獲取,但目前仍存在部分隱私信息無需授權就可以拿到的。

為什么

  • 大眾隱私意識覺醒,權限隱私安全性差會直接導致用戶不愿使用;

  • 日趨嚴格的權限治理和隱私安全治理,工信部和市場的嚴格管控;

  • 客戶端作為與用戶最直接的交互信息收集入口,有義務合規化的收集和使用用戶信息。

具體實踐

一、Android各版本對權限的適配處理

1.1 早期的注冊權限

Android6.0(SDK版本為23)之前的版本,安裝App頁面會列出當前app所注冊的所有權限,無同意與否按鈕,只有安裝和取消,開發App時只需要在清單文件中注冊所需的對應權限即可:

  1. <uses-permission android:name="android.permission.READ_PHONE_STATE" /> 
  2. <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 
  3. <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
  4. <uses-permission android:name="android.permission.CAMERA" /> 

1.2 動態權限授予

Android自6.0(SDK版本為23)開始,將權限分為普通權限,危險權限,特殊權限。而其中的 危險權限 需要在調用某些系統方法之前需要用戶手動授予對應權限,包括PHONE,LOCATION,STORAGE等多個權限組。如果在沒授權的情況下直接調用相關方法,就會拋出,應用也隨之崩潰。報錯信息類似下方這種:

  1. java.lang.SecurityException: getDeviceId: has android.permission.READ_PHONE_STATE. 

而要解決以上的報錯問題,可以自行封裝權限處理類工具,也可使用一些開源的權限工具進行處理。核心代碼都逃不過:

  1. //判斷某個權限是否已經被同意 
  2. ContextCompat.checkSelfPermission(context, perm) ==  PackageManager.PERMISSION_GRANTED) 
  3. //請求某個權限,調用后會彈出權限系統彈窗 
  4. ActivityCompat.requestPermissions((Activity) object, perms, requestCode); 

注:如果用戶拒絕權限且不讓再次顯示系統權限授權彈窗的話,最好是提供端內可點擊進入手機系統的權限設置頁面以讓用戶可以選擇開啟對應權限。

1.3 READ_PHONE_STATE權限的變化

1.3.1 演變

  • READ_PHONE_STATE權限是允許訪問電話狀態權限,此權限主要集中在 TelephonyManager 類中,控制對imei,deviceId,Meid,SimSerialNumber等id和其他手機狀態的獲取。而多數app都會單獨引用或者組合引用這些字段作為設備唯一碼來標識用戶設備,進而服務端進行數據分析,下發等操作。在6.0之前只需注冊后就可以使用。
  • 在Android6.0之后,READ_PHONE_STATE權限變為危險權限,需要用戶主動授權后方可使用,故部分App處理的操作為必須授權該權限后才允許使用App,不授權的話就退出應用。這顯然不是一個很好的解決方式,但在過渡階段還是能有一定效果的。可以預留出時間重新定義在未授權情況下如何標識特定設備。

  • 在適配Android10.0之后,READ_PHONE_STATE權限直接被取消掉了,換成了系統權限 READ_PRIVILEGED_PHONE_STATE ,此權限只能在系統App中才可以被使用。而如果代碼處理上仍使用READ_PHONE_STATE權限進行授權的話,手機上不會再彈出同樣的權限授予彈窗了,此時如果仍調用 getDeviceId 方法,會直接拋出 SecurityException 。源碼上的可以體現在對應方法的注解上:
  1. @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) 
  2. public String getDeviceId() 
  3. @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) 
  4. public String getImei() 

1.3.2 適配處理

  • 清單文件中設定使用READ_PHONE_STATE權限最高為28,即Android10以上的設備不進行該權限的獲取。

  1. <uses-permission 
  2.     android:name="android.permission.READ_PHONE_STATE" 
  3.     android:maxSdkVersion="28"/> 

 

  1. getDeviceId 
  2. getImei 
  3. Build.VERSION.SDK_INT < Build.VERSION_CODES.Q 
  • 由于Android10.0以上手機獲取不到這些id,對國內廣告的精準推送也都產生了一定的影響,故各大產商聯盟推出了OAID的標識,本意是用于廣告精準推送,但目前也不失作為客戶端App唯一標識的一種選擇。具體獲取方式參考聯盟的集成文檔即可。

1.4 存儲分區的處理

自Android10.0之后,Google開始采用存儲分區,主要目的是改變現有App胡亂使用手機存儲導致垃圾和其他安全問題。適配 Android11 后強制使用存儲分區。具體分區如下,擴展的外部存儲是無權限進行讀取的。而其他私有存儲會在App卸載后清理掉:

具體部分代碼改動如下:

1.拍照存儲路徑:

Environment.getExternalStorageDirectory().getAbsolutePath() 修改為 getExternalFilesDir(Environment.DIRECTORY_DCIM) ;

2.原本的存儲路徑 /storage/emulated/0 改為 /storage/emulated/0/Android/data

具體調用的修改為:

Environment.getExternalStorageDirectory() 改為 context.getExternalFilesDir() ;

3.如果App在sdcard中有重要存儲,可以在適配android10.0的過渡階段將之前的數據復制出來到新的存儲分區中。

二、隱私信息合規化處理

上半部分較為粗略的過了一下權限相關的部分改動和對應修改,接下來說一說隱私信息的合規化處理。當然,權限作為隱私處理的前提,如果權限都沒有合理的修改完畢,那隱私處理合規化更談不上了,畢竟很多隱私是依賴于權限的。

2.1 隱私信息獲取告知的直接化和透明化

  • 在首次打開App時,需要在進行初始化之前就向用戶展示用戶協議與隱私保護彈窗或頁面,只有用戶在同意之后才能進入App進行使用。而對于 手機號、MAC地址、IMEI、所在位置信息、手機存儲權限、相冊訪問權限 , 手機流量使用 等敏感信息需要讓用戶在第一屏就能夠看到。并且提供用戶協議和隱私政策鏈接,能讓用戶點擊后查看具體詳細的條款。設計完成后要讓法務進行確認,是否符合。

  • 在處理1.2中的動態權限時,需要在系統彈窗中或者之前說明需要用戶授予該權限的原因。如:獲取定位權限之前需要告知用戶該權限是為了獲取定位信息,然后精準推送相關內容。獲取相機權限是為了要使用攝像頭進行拍照。

  • 在進入App操作三步以內能看到法律條款和隱私政策入口,正常處理方式會在App的 設置頁 內加上對應入口。同時在注冊登錄頁面,需要明顯展示出法律條款和隱私條款入口,且需要默認不勾選,需要用戶主動同意后才能進行賬號注冊和登錄。如下圖:

  • 分發廣告的App需要注意處理廣告下載邏輯,在用戶點擊后需要展示所下載App的信息,所需的權限和隱私條款,讓用戶清楚的知道下載的App是否是自己想要的,且不允許自動下載。這樣能很好的解決用戶無意識的在手機上下載了很多無用App,這對很多老年人使用手機很有幫助。

2.2 隱私信息獲取和傳輸的安全化

  • 避免頻繁的調用系統方法獲取隱私信息,可以在單次啟動App調用該獲取數據后使用全局變量進行緩存,之后每次使用時直接調用全局變量使用就行,不必每次都調用系統方法。包括 getDeviceId , getMacAddress 等。
  • 諸如imei,mac,定位的經緯度等敏感信息,需要避免多次在網絡中傳輸,可以處理為單獨接口收集相關信息一次后保存在服務端即可,無需每次傳輸;另外需要避免以明文的方式在數據接口中傳輸。像imei可以通過MD5加密算法進行加密處理,并不會影響用戶的區分;

  • 由于READ_PHONE_STATE權限升級為了系統權限 READ_PRIVILEGED_PHONE_STATE ,部分通過native方式(C代碼)直接調用imei等信息時也會報錯或者為空。建議這部分盡量使用java方式調用,如果有變動可以明顯的感知到錯誤并修改,不至于需要重新修改C代碼,然后又進行jni編譯。

2.3 部分隱私Api調用的嚴格化

  • 在未授權的情況下,需要保證App中與該權限無關聯的功能可以正常使用。所以就不能簡單的處理為1.3.1中提到的不給權限就不讓使用App的方案了。

  • Android端目前尚存在部分無需動態授權就可以獲取的隱私,如用戶手機上的應用安裝列表。此信息可用于分析用戶喜好,如小說類產品還是視頻類產品;也可以用于分析用戶某些App還未安裝,便于推送廣告的拉新。但目前國內市場已經開始治理,如果存在獲取手機內應用列表的情況,會進行下架處理或者不予上架。

  • 目前工信部和各應用市場對App上架要求嚴格,使用第三方檢測工具可以很細致的檢測出App中存在哪些不合理的系統方法調用,比如:在未同意協議與隱私之前就進行了網絡請求;在未同意協議與隱私之前獲取了Mac地址;在未獲取定位權限的情況下就獲取了手機的基站信息。

三、遇到的一些問題和坑

這里總結部分在開發過程中遇到的一些隱蔽小點,希望能幫助到大家。

  • 早期的騰訊X5內核會在隱私協議展示時就會獲取mac地址,如下圖。可嘗試更新到新的版本繼續查看。由于我方對X5內核需求不高,所以直接進行了刪除清理。

  • 集成開源庫或者第三方sdk的初始化均需要處理為同意隱私之后再進行,大多數sdk在初始化時都會調用相關無需授權的api方法。如語音相關的訊飛sdk會在初始化的時候調用MAC地址信息。

  • 部分統計庫如umeng,talkingdata sdk需要升級到新版本的接入方式。老版本的talkingdata sdk在尚未授定位權限時進行初始化仍會調用手機基站信息api(屬于定位)。

  • 自有代碼邏輯中相關隱私信息的獲取和賦值,也都要放到隱私同意之后去進行,故在用戶協議和隱私同意之前盡量少的進行代碼邏輯處理。

總結

權限隱私的發展趨勢只會越來越嚴格和規范。在日常的客戶端開發當中,我們就需要時刻持有隱私安全的意識,讓自己站在用戶的角度上合理的保證隱私安全。并緊跟隱私安全的發展,提前布局。這樣才能不至于臨時出問題后手忙腳亂的去處理。

本文僅粗略的記錄了一些權限隱私相關的一些情況和做法,如有不當,歡迎指正 。

 

責任編輯:張燕妮 來源: AggrxTech
相關推薦

2018-12-29 14:10:17

GDPR安全隱私數據安全

2011-10-28 09:53:50

數據庫安全數據安全

2025-06-20 07:00:00

CIO數據隱私IT 領導者

2018-05-31 21:53:17

云合規云計算多云

2020-03-10 09:04:05

隱私合規人工智能AI

2022-11-29 09:59:08

2013-10-17 10:24:01

IT合規性合規性法規遵從

2022-11-25 14:47:58

2022-05-26 11:11:19

Kubernetes容器云安全

2023-09-06 14:49:23

數據安全隱私數字化

2021-05-28 18:06:13

RSA 創新沙盒

2019-10-30 05:55:10

網絡安全信息安全數據安全

2025-01-21 08:40:00

2017-09-27 15:46:33

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美二区三区 | 日日操网站 | 久久久久久久久久久爱 | 色综合久 | 中文字幕在线看人 | 91一区二区| 超碰av在线| 国产精品一区久久久 | 91精品国产色综合久久 | 欧美中文字幕一区二区三区亚洲 | 国产精品99久久久久久宅男 | 91色网站| 一级片在线观看 | 久久国产精品视频 | 欧美一级α片 | av网站在线看 | 精品欧美一区二区三区久久久 | 亚洲一区二区三区在线免费 | 欧美精品一区二区三 | 91观看| 国产9999精品 | 波多野结衣二区 | 91资源在线 | 91免费版在线观看 | 2018天天干天天操 | 中文字幕在线一区 | 亚洲男人天堂 | 午夜一区二区三区 | 日韩精品二区 | 亚洲福利精品 | 欧美激情亚洲激情 | 国产目拍亚洲精品99久久精品 | 黄色毛片大全 | 欧美日韩久久 | 国精品一区二区 | 国产精品成av人在线视午夜片 | 狠狠骚| 午夜网 | 精品国产色 | www.9191| 国产精品呻吟久久av凹凸 |