偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

Android 端權(quán)限隱私的合規(guī)化處理實(shí)踐

移動(dòng)開(kāi)發(fā) Android
權(quán)限隱私的發(fā)展趨勢(shì)只會(huì)越來(lái)越嚴(yán)格和規(guī)范。在日常的客戶端開(kāi)發(fā)當(dāng)中,我們就需要時(shí)刻持有隱私安全的意識(shí),讓自己站在用戶的角度上合理的保證隱私安全。

[[419042]]

是什么

對(duì)客戶端而言,權(quán)限隱私可分為權(quán)限和隱私兩個(gè)大的方面。

  • 權(quán)限為用戶通過(guò)app內(nèi)彈窗設(shè)置或者手機(jī)設(shè)置內(nèi)對(duì)應(yīng)app的權(quán)限設(shè)置方式給予對(duì)應(yīng)app相應(yīng)的權(quán)限,如電話權(quán)限,定位權(quán)限,相機(jī)權(quán)限等,本文主要集中介紹隱私相關(guān)的權(quán)限部分。

  • 隱私為app使用過(guò)程中與用戶個(gè)人相關(guān)的個(gè)人信息,如所在位置,Mac地址,設(shè)備id等。就Android端而言,多數(shù)隱私信息需要對(duì)應(yīng)授權(quán)后才能獲取,但目前仍存在部分隱私信息無(wú)需授權(quán)就可以拿到的。

為什么

  • 大眾隱私意識(shí)覺(jué)醒,權(quán)限隱私安全性差會(huì)直接導(dǎo)致用戶不愿使用;

  • 日趨嚴(yán)格的權(quán)限治理和隱私安全治理,工信部和市場(chǎng)的嚴(yán)格管控;

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

具體實(shí)踐

一、Android各版本對(duì)權(quán)限的適配處理

1.1 早期的注冊(cè)權(quán)限

Android6.0(SDK版本為23)之前的版本,安裝App頁(yè)面會(huì)列出當(dāng)前app所注冊(cè)的所有權(quán)限,無(wú)同意與否按鈕,只有安裝和取消,開(kāi)發(fā)App時(shí)只需要在清單文件中注冊(cè)所需的對(duì)應(yīng)權(quán)限即可:

  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 動(dòng)態(tài)權(quán)限授予

Android自6.0(SDK版本為23)開(kāi)始,將權(quán)限分為普通權(quán)限,危險(xiǎn)權(quán)限,特殊權(quán)限。而其中的 危險(xiǎn)權(quán)限 需要在調(diào)用某些系統(tǒng)方法之前需要用戶手動(dòng)授予對(duì)應(yīng)權(quán)限,包括PHONE,LOCATION,STORAGE等多個(gè)權(quán)限組。如果在沒(méi)授權(quán)的情況下直接調(diào)用相關(guān)方法,就會(huì)拋出,應(yīng)用也隨之崩潰。報(bào)錯(cuò)信息類似下方這種:

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

而要解決以上的報(bào)錯(cuò)問(wèn)題,可以自行封裝權(quán)限處理類工具,也可使用一些開(kāi)源的權(quán)限工具進(jìn)行處理。核心代碼都逃不過(guò):

  1. //判斷某個(gè)權(quán)限是否已經(jīng)被同意 
  2. ContextCompat.checkSelfPermission(context, perm) ==  PackageManager.PERMISSION_GRANTED) 
  3. //請(qǐng)求某個(gè)權(quán)限,調(diào)用后會(huì)彈出權(quán)限系統(tǒng)彈窗 
  4. ActivityCompat.requestPermissions((Activity) object, perms, requestCode); 

注:如果用戶拒絕權(quán)限且不讓再次顯示系統(tǒng)權(quán)限授權(quán)彈窗的話,最好是提供端內(nèi)可點(diǎn)擊進(jìn)入手機(jī)系統(tǒng)的權(quán)限設(shè)置頁(yè)面以讓用戶可以選擇開(kāi)啟對(duì)應(yīng)權(quán)限。

1.3 READ_PHONE_STATE權(quán)限的變化

1.3.1 演變

  • READ_PHONE_STATE權(quán)限是允許訪問(wèn)電話狀態(tài)權(quán)限,此權(quán)限主要集中在 TelephonyManager 類中,控制對(duì)imei,deviceId,Meid,SimSerialNumber等id和其他手機(jī)狀態(tài)的獲取。而多數(shù)app都會(huì)單獨(dú)引用或者組合引用這些字段作為設(shè)備唯一碼來(lái)標(biāo)識(shí)用戶設(shè)備,進(jìn)而服務(wù)端進(jìn)行數(shù)據(jù)分析,下發(fā)等操作。在6.0之前只需注冊(cè)后就可以使用。
  • 在Android6.0之后,READ_PHONE_STATE權(quán)限變?yōu)槲kU(xiǎn)權(quán)限,需要用戶主動(dòng)授權(quán)后方可使用,故部分App處理的操作為必須授權(quán)該權(quán)限后才允許使用App,不授權(quán)的話就退出應(yīng)用。這顯然不是一個(gè)很好的解決方式,但在過(guò)渡階段還是能有一定效果的??梢灶A(yù)留出時(shí)間重新定義在未授權(quán)情況下如何標(biāo)識(shí)特定設(shè)備。

  • 在適配Android10.0之后,READ_PHONE_STATE權(quán)限直接被取消掉了,換成了系統(tǒng)權(quán)限 READ_PRIVILEGED_PHONE_STATE ,此權(quán)限只能在系統(tǒng)App中才可以被使用。而如果代碼處理上仍使用READ_PHONE_STATE權(quán)限進(jìn)行授權(quán)的話,手機(jī)上不會(huì)再?gòu)棾鐾瑯拥臋?quán)限授予彈窗了,此時(shí)如果仍調(diào)用 getDeviceId 方法,會(huì)直接拋出 SecurityException 。源碼上的可以體現(xiàn)在對(duì)應(yīng)方法的注解上:
  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 適配處理

  • 清單文件中設(shè)定使用READ_PHONE_STATE權(quán)限最高為28,即Android10以上的設(shè)備不進(jìn)行該權(quán)限的獲取。

  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以上手機(jī)獲取不到這些id,對(duì)國(guó)內(nèi)廣告的精準(zhǔn)推送也都產(chǎn)生了一定的影響,故各大產(chǎn)商聯(lián)盟推出了OAID的標(biāo)識(shí),本意是用于廣告精準(zhǔn)推送,但目前也不失作為客戶端App唯一標(biāo)識(shí)的一種選擇。具體獲取方式參考聯(lián)盟的集成文檔即可。

1.4 存儲(chǔ)分區(qū)的處理

自Android10.0之后,Google開(kāi)始采用存儲(chǔ)分區(qū),主要目的是改變現(xiàn)有App胡亂使用手機(jī)存儲(chǔ)導(dǎo)致垃圾和其他安全問(wèn)題。適配 Android11 后強(qiáng)制使用存儲(chǔ)分區(qū)。具體分區(qū)如下,擴(kuò)展的外部存儲(chǔ)是無(wú)權(quán)限進(jìn)行讀取的。而其他私有存儲(chǔ)會(huì)在App卸載后清理掉:

具體部分代碼改動(dòng)如下:

1.拍照存儲(chǔ)路徑:

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

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

具體調(diào)用的修改為:

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

3.如果App在sdcard中有重要存儲(chǔ),可以在適配android10.0的過(guò)渡階段將之前的數(shù)據(jù)復(fù)制出來(lái)到新的存儲(chǔ)分區(qū)中。

二、隱私信息合規(guī)化處理

上半部分較為粗略的過(guò)了一下權(quán)限相關(guān)的部分改動(dòng)和對(duì)應(yīng)修改,接下來(lái)說(shuō)一說(shuō)隱私信息的合規(guī)化處理。當(dāng)然,權(quán)限作為隱私處理的前提,如果權(quán)限都沒(méi)有合理的修改完畢,那隱私處理合規(guī)化更談不上了,畢竟很多隱私是依賴于權(quán)限的。

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

  • 在首次打開(kāi)App時(shí),需要在進(jìn)行初始化之前就向用戶展示用戶協(xié)議與隱私保護(hù)彈窗或頁(yè)面,只有用戶在同意之后才能進(jìn)入App進(jìn)行使用。而對(duì)于 手機(jī)號(hào)、MAC地址、IMEI、所在位置信息、手機(jī)存儲(chǔ)權(quán)限、相冊(cè)訪問(wèn)權(quán)限 , 手機(jī)流量使用 等敏感信息需要讓用戶在第一屏就能夠看到。并且提供用戶協(xié)議和隱私政策鏈接,能讓用戶點(diǎn)擊后查看具體詳細(xì)的條款。設(shè)計(jì)完成后要讓法務(wù)進(jìn)行確認(rèn),是否符合。

  • 在處理1.2中的動(dòng)態(tài)權(quán)限時(shí),需要在系統(tǒng)彈窗中或者之前說(shuō)明需要用戶授予該權(quán)限的原因。如:獲取定位權(quán)限之前需要告知用戶該權(quán)限是為了獲取定位信息,然后精準(zhǔn)推送相關(guān)內(nèi)容。獲取相機(jī)權(quán)限是為了要使用攝像頭進(jìn)行拍照。

  • 在進(jìn)入App操作三步以內(nèi)能看到法律條款和隱私政策入口,正常處理方式會(huì)在App的 設(shè)置頁(yè) 內(nèi)加上對(duì)應(yīng)入口。同時(shí)在注冊(cè)登錄頁(yè)面,需要明顯展示出法律條款和隱私條款入口,且需要默認(rèn)不勾選,需要用戶主動(dòng)同意后才能進(jìn)行賬號(hào)注冊(cè)和登錄。如下圖:

  • 分發(fā)廣告的App需要注意處理廣告下載邏輯,在用戶點(diǎn)擊后需要展示所下載App的信息,所需的權(quán)限和隱私條款,讓用戶清楚的知道下載的App是否是自己想要的,且不允許自動(dòng)下載。這樣能很好的解決用戶無(wú)意識(shí)的在手機(jī)上下載了很多無(wú)用App,這對(duì)很多老年人使用手機(jī)很有幫助。

2.2 隱私信息獲取和傳輸?shù)陌踩?/h4>
  • 避免頻繁的調(diào)用系統(tǒng)方法獲取隱私信息,可以在單次啟動(dòng)App調(diào)用該獲取數(shù)據(jù)后使用全局變量進(jìn)行緩存,之后每次使用時(shí)直接調(diào)用全局變量使用就行,不必每次都調(diào)用系統(tǒng)方法。包括 getDeviceId , getMacAddress 等。
  • 諸如imei,mac,定位的經(jīng)緯度等敏感信息,需要避免多次在網(wǎng)絡(luò)中傳輸,可以處理為單獨(dú)接口收集相關(guān)信息一次后保存在服務(wù)端即可,無(wú)需每次傳輸;另外需要避免以明文的方式在數(shù)據(jù)接口中傳輸。像imei可以通過(guò)MD5加密算法進(jìn)行加密處理,并不會(huì)影響用戶的區(qū)分;

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

2.3 部分隱私Api調(diào)用的嚴(yán)格化

  • 在未授權(quán)的情況下,需要保證App中與該權(quán)限無(wú)關(guān)聯(lián)的功能可以正常使用。所以就不能簡(jiǎn)單的處理為1.3.1中提到的不給權(quán)限就不讓使用App的方案了。

  • Android端目前尚存在部分無(wú)需動(dòng)態(tài)授權(quán)就可以獲取的隱私,如用戶手機(jī)上的應(yīng)用安裝列表。此信息可用于分析用戶喜好,如小說(shuō)類產(chǎn)品還是視頻類產(chǎn)品;也可以用于分析用戶某些App還未安裝,便于推送廣告的拉新。但目前國(guó)內(nèi)市場(chǎng)已經(jīng)開(kāi)始治理,如果存在獲取手機(jī)內(nèi)應(yīng)用列表的情況,會(huì)進(jìn)行下架處理或者不予上架。

  • 目前工信部和各應(yīng)用市場(chǎng)對(duì)App上架要求嚴(yán)格,使用第三方檢測(cè)工具可以很細(xì)致的檢測(cè)出App中存在哪些不合理的系統(tǒng)方法調(diào)用,比如:在未同意協(xié)議與隱私之前就進(jìn)行了網(wǎng)絡(luò)請(qǐng)求;在未同意協(xié)議與隱私之前獲取了Mac地址;在未獲取定位權(quán)限的情況下就獲取了手機(jī)的基站信息。

三、遇到的一些問(wèn)題和坑

這里總結(jié)部分在開(kāi)發(fā)過(guò)程中遇到的一些隱蔽小點(diǎn),希望能幫助到大家。

  • 早期的騰訊X5內(nèi)核會(huì)在隱私協(xié)議展示時(shí)就會(huì)獲取mac地址,如下圖??蓢L試更新到新的版本繼續(xù)查看。由于我方對(duì)X5內(nèi)核需求不高,所以直接進(jìn)行了刪除清理。

  • 集成開(kāi)源庫(kù)或者第三方sdk的初始化均需要處理為同意隱私之后再進(jìn)行,大多數(shù)sdk在初始化時(shí)都會(huì)調(diào)用相關(guān)無(wú)需授權(quán)的api方法。如語(yǔ)音相關(guān)的訊飛sdk會(huì)在初始化的時(shí)候調(diào)用MAC地址信息。

  • 部分統(tǒng)計(jì)庫(kù)如umeng,talkingdata sdk需要升級(jí)到新版本的接入方式。老版本的talkingdata sdk在尚未授定位權(quán)限時(shí)進(jìn)行初始化仍會(huì)調(diào)用手機(jī)基站信息api(屬于定位)。

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

總結(jié)

權(quán)限隱私的發(fā)展趨勢(shì)只會(huì)越來(lái)越嚴(yán)格和規(guī)范。在日常的客戶端開(kāi)發(fā)當(dāng)中,我們就需要時(shí)刻持有隱私安全的意識(shí),讓自己站在用戶的角度上合理的保證隱私安全。并緊跟隱私安全的發(fā)展,提前布局。這樣才能不至于臨時(shí)出問(wèn)題后手忙腳亂的去處理。

本文僅粗略的記錄了一些權(quán)限隱私相關(guān)的一些情況和做法,如有不當(dāng),歡迎指正 。

 

責(zé)任編輯:張燕妮 來(lái)源: AggrxTech
相關(guān)推薦

2018-12-29 14:10:17

GDPR安全隱私數(shù)據(jù)安全

2025-06-20 07:00:00

CIO數(shù)據(jù)隱私IT 領(lǐng)導(dǎo)者

2011-10-28 09:53:50

數(shù)據(jù)庫(kù)安全數(shù)據(jù)安全

2018-05-31 21:53:17

云合規(guī)云計(jì)算多云

2020-03-10 09:04:05

隱私合規(guī)人工智能AI

2022-11-29 09:59:08

2022-11-25 14:47:58

2022-05-26 11:11:19

Kubernetes容器云安全

2013-10-17 10:24:01

IT合規(guī)性合規(guī)性法規(guī)遵從

2023-09-06 14:49:23

數(shù)據(jù)安全隱私數(shù)字化

2019-10-30 05:55:10

網(wǎng)絡(luò)安全信息安全數(shù)據(jù)安全

2021-05-28 18:06:13

RSA 創(chuàng)新沙盒

2025-01-21 08:40:00

2017-09-27 15:46:33

2019-08-09 11:34:39

華為HMS智慧生活
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)