27日週五,本人寫了一篇「被Google Play下架刷爆朋友圈:聊聊SDK採集數據的祕密」,和互聯網圈裏的開發者朋友一同針對SDK採集用戶隱私數據行爲進行了探討,文章中也列舉出了5條目前一些第三方數據公司在未經用戶容許的狀況下利用SDK採集的用戶隱私數據指標,同時也強調了這些隱私數據被採集後將對用戶自己有何影響及相關危險性,有想了解的朋友能夠添加「友盟數據運營舍」微信公衆帳號查看。linux
在完成第一篇文章後,有些開發者反映仍是想看到些更技術層面的SDK分享,因此今天拋出SDK第二篇分享——技術篇,從代碼層面出發,爲衆多開發者梳理下SDK採集數據的代碼都有哪些,不一樣數據指標的代碼有什麼區別,這些數據指標涉及用戶信息隱私的程度如何,幫助開發者規避SDK中存在的「地雷「。但願看完如下內容能夠給互聯網開發者一些實質性的幫助,同時也但願引發行業內對利用SDK採集用戶隱私數據的反思。shell
接下來介紹的SDK代碼是以Android平臺爲主列舉的,其中包括五大類開發者能夠採集到信息:「設備信息」、「應用信息」、「傳感器信息」、「帳號信息」、「網絡相關信息」。若是一旦開發者須要採集這些數據,必須給出數據披露,不然可能會被應用商店作下架處理安全
1、應用信息類(信息隱私程度:隱私)
獲取到用戶手機上已經安裝的APP信息列表和正在運行的應用列表。這類數據屬於嚴重涉及用戶隱私的數據,不建議開發者在應用中作這樣的操做。微信
2、帳號信息類(信息隱私程度:隱私)
獲取用戶帳號信息。此類數據也屬於嚴重涉及用戶隱私的數據,不建議開發者在應用中作這樣的操做。
3、網絡相關信息類(信息隱私程度:隱私)
獲取用戶移動設備的聯網信息、用戶通訊的設備信息、GPS、NFC信息等。開發者能夠利用這些信息準肯定位用戶地理位置,但這些信息都屬於用戶很是敏感及隱私的,若是您的服務不是專門提供位置服務,請不要在APP中獲取這類信息,避免違反隱私政策。網絡
4、設備信息類(信息隱私程度:較高)
獲取用戶移動設備標識信息、SIM標識信息等。但像手機號碼這樣的用戶隱私數據是必定不能採集的,不然會觸及各應用商店審覈的紅線。
5、傳感器信息類(信息隱私程度:隱私)
如今的智能移動設備內部集成了大量的傳感器,用以完成智能化工做。不一樣型號的移動設備,集成傳感器的數量與種類也有所區別,好比用戶的行蹤能夠經過位置傳感器精確追蹤,但這類數據也屬於用戶隱私數據。
以上五大類數據指標是能夠經過Android提供的標準系統接口獲取,但若是使用,必須第一時間告知用戶要採集用戶哪些數據,並告知用戶這些數據用途是什麼,在用戶贊成的狀況下才可以使用。不過對於其中涉及用戶隱私程度較嚴重的幾類數據,例如:安裝的軟件列表信息、運行的安裝列表信息、GPS信息、NFC信息等,幾大應用商店都禁止使用,一旦被發現確定會作下架處理。spa
跨越Android系統接口做弊的採集方式接口
面對目前應用商店嚴格的規則,個別第三方SDK也會經過別的方式採集用戶隱私數據,例如:執行shell獲取移動設備上已經安裝的應用信息,這種採集方式是跨越Android系統接口的方式,經過執行linux命令的方式獲取。這種跨過Android系統接口採集戶隱私數據的行爲能夠說屬於做弊、鑽漏洞行爲,我本人堅定抵制這種行爲。這種做弊的相關代碼也分享給開發者,開發者可根據代碼中的信息判斷SDK是否經過跨越Android系統接口的方式採集隱私數據。
隱私數據的用途及風險圖片
以上代碼基本能夠囊括目前市場上SDK採集數據涉及用戶隱私的類別,下面再就本文中各種數據採集後的用途,以及每一個數據存在的隱私風險爲你們作個評估。開發
一、應用信息類(風險程度:高)產品
SDK採集數據指標:安裝的軟件列表、運行的安裝列表。
用途與風險:經過採集這類信息能夠清楚瞭解用戶設備中各種APP應用的信息,若數據量龐大,便可推算出每款APP應用的市場佔有率狀況、各種競品APP的狀況。同時也能夠用於分析用戶喜愛、興趣特徵、行爲習慣等。徹底泄露用戶隱私數據,侵犯用戶隱私。
隱私保護建議: 提早作數據披露,須要得到用戶許可。
二、帳號信息類(風險程度:高)
SDK採集數據指標:獲取用戶帳號。
用途與風險:經過採集這類信息能夠獲取用戶帳戶列表,將移動設備信息與用戶帳號關聯,對設備進行惟一標示。這種數據的採集會給用戶帶來極高的風險,若用戶帳號被泄露、克隆,用戶的利益和生命財產可能受到威脅。
隱私保護建議: 提早作數據披露,須要得到用戶許可。
三、網絡相關信息類(風險程度:高)
SDK採集數據指標:Wifi信息、GPS信息、藍牙信息、NFC適配器信息。
用途與風險:經過採集GPS信息能夠獲取用戶位置信息,進行用戶地域行爲分析;採集Wifi、藍牙、NFC信息可獲取網絡鏈接狀態及配對設備信息、用戶支付信息、用戶登陸驗證信息等。這些信息的採集徹底侵犯了用戶隱私,支付、登陸驗證等信息將泄露更多用戶身份,使用戶赤裸裸的「公佈於衆」,毫無安全可言。
隱私保護建議: 提早作數據披露,須要得到用戶許可。
四、設備信息類(風險程度:較高)
SDK採集數據指標:電話類型、網絡類型、註冊國家、硬件廠商。
用途與風險:經過採集這類信息能夠獲取用戶機型信息、運營商信息、地域分部信息等,通常用於進行機型適配、用戶地域分析、網絡模式分析等。這類數據的採集對於用戶隱私安全的侵害影響不大,多數用於行業趨勢分析。
隱私保護建議: 提早作數據披露,須要得到用戶許可。
五、傳感器信息類(信息隱私程度:隱私)
SDK採集數據指標:加速度傳感器、環境光傳感器、距離傳感器、磁力計傳感器、平衡傳感器、震動傳感器。
用途與風險:經過採集這類信息能夠獲取用戶移動設備上傳感器配置信息,瞭解用戶移動設備可支持哪些功能,適合運行哪一種類型APP。也有一些安全類APP可經過觸發傳感器判斷此移動設備是不是真機。此類數據的採集對於用戶隱私安全的侵害影響不大。
隱私保護建議: 提早作數據披露,須要得到用戶許可。
SDK隱私政策、協議
開發者除了對SDK代碼要有詳細的瞭解外,還要對隱私政策有所重視和規範,以保護全部使用服務用戶的我的隱私權。以安卓爲例,目前市場上對於隱私政策的規範都包含:適用範圍、信息使用、信息披露、信息存儲和交換、Cookie的使用、信息安全這幾大方面。
隱私政策舉例(模板)
隱私政策舉例(模板)
其中信息的使用與信息披露尤其重要,如Google Play都要求凡涉及我的信息及敏感信息的,必須提供隱私權政策,以及任何形式的應用內披露聲明,以及完整說明您的應用會收集、如何使用、分享和處理用戶數據。但通常來講,應用市場對於在用戶不知情的狀況下采集獲取用戶的「帳戶信息」、「傳感器信息」、「藍牙信息」、「NFC信息」、應用安裝信息「等是嚴格禁止的。一旦發現APP中有這樣的行爲存在,APP下架處理是必然的結果。因此開發者要充分重視對用戶的告知義務,包括將第三方SDK的數據採集信息,也應列入APP的用戶隱私政策條款中。
最後,回答一個網友問的問題:【友盟+】算是有良心的那種麼。【友盟+】從建立公司至今都是以維護用戶與開發者權益及隱私安全爲己任,【友盟+】SDK中毫不涉及在隱私協議範圍外私自採集用戶隱私數據行爲,你們能夠下載【友盟+】SDK使用看看。
做者:【友盟+】高級產品研發專家 馬巍源