了解廣告SDK工作機(jī)制,保護(hù)APP自身安全
編輯導(dǎo)讀:很多人對(duì)SDK又愛(ài)又恨,一方面能夠幫助開(kāi)發(fā)者簡(jiǎn)化開(kāi)發(fā)步驟,提高開(kāi)發(fā)效率,節(jié)約開(kāi)發(fā)成本;但是另一方面也要嵌入第三方SDK后帶來(lái)的風(fēng)險(xiǎn)和后果。想要避免風(fēng)險(xiǎn),首先就要了解它。本文作者對(duì)廣告SDK工作機(jī)制進(jìn)行解析,希望對(duì)你有幫助。
SDK,APP開(kāi)發(fā)者應(yīng)該都很了解,開(kāi)發(fā)者們或多或少都接觸或安裝過(guò),而提到SDK安全性這個(gè)問(wèn)題,開(kāi)發(fā)者們的情緒可能都不會(huì)平靜,這其中的利害關(guān)系確實(shí)有點(diǎn)兒復(fù)雜。
一方面,SDK方便開(kāi)發(fā)者產(chǎn)品設(shè)計(jì),幫助開(kāi)發(fā)者簡(jiǎn)化開(kāi)發(fā)步驟,提高開(kāi)發(fā)效率,節(jié)約開(kāi)發(fā)成本,像框架類、廣告類、推送類、統(tǒng)計(jì)類、地圖類、社交類、支付類、客服類、測(cè)試類等等,這些不同類型的SDK極大地方便了開(kāi)發(fā)者。
而另一方面,對(duì)開(kāi)發(fā)者來(lái)說(shuō),也不得不承擔(dān),因嵌入第三方SDK后帶來(lái)的風(fēng)險(xiǎn)、后果,由于SDK開(kāi)發(fā)者開(kāi)發(fā)能力的參差不齊,可能因?yàn)榧夹g(shù)原因或惡意‘留后門(mén)’而存在大量安全漏洞,還有一些SDK會(huì)違規(guī)讀取和儲(chǔ)存用戶隱私,或執(zhí)行越權(quán)操作等,這些問(wèn)題輕則造成APP卡頓,重則被應(yīng)用市場(chǎng)下架,更嚴(yán)重的情況是漏洞被攻擊,就可能會(huì)給APP及APP用戶帶來(lái)嚴(yán)重?fù)p失。
早在2020年7月,延遲四個(gè)月舉行的3.15晚會(huì)中,央視曝光了50多款A(yù)pp中內(nèi)嵌SDK插件竊取用戶隱私的問(wèn)題,這些App通過(guò)內(nèi)置SDK插件,在用戶不知情的情況下,讀取、上傳用戶電話號(hào)碼、通訊錄、短信記錄、應(yīng)用列表等信息,并竊取聯(lián)系人、交易驗(yàn)證碼等數(shù)據(jù),嚴(yán)重侵犯用戶隱私權(quán)益、財(cái)產(chǎn)安全。讓SDK安全性問(wèn)題浮出水面,一時(shí)間,SDK成為“眾矢之的”,令社會(huì)普遍認(rèn)為,SDK是造成個(gè)人隱私數(shù)據(jù)泄露的“元兇”。上月,一則“滴滴出行”APP因嚴(yán)重違法違規(guī)收集使用個(gè)人信息被應(yīng)用市場(chǎng)下架的消息,讓個(gè)人信息安全問(wèn)題重回?zé)狳c(diǎn),像滴滴這樣的Hero APP都被下架了,更是令眾多APP經(jīng)營(yíng)者風(fēng)聲鶴唳。
事實(shí)真的如此嗎?SDK真的是“洪水猛獸”嗎?讓我們來(lái)看一組數(shù)據(jù)。
根據(jù)觀研天下發(fā)布的《2019年中國(guó)移動(dòng)APP行業(yè)分析報(bào)告》調(diào)查數(shù)據(jù)顯示,截止2018年第四季度,全球APP平均安裝SDK數(shù)量達(dá)18.2個(gè)/APP,100-500萬(wàn)下載量的APP的SDK平均安裝數(shù)量最多,達(dá)27.7個(gè)。
2016-2018年全球APP平均安裝SDK數(shù)量
2018年12月不同下載量級(jí)別APP的SDK數(shù)
2019年,南都個(gè)人信息保護(hù)研究中心委托中國(guó)金融認(rèn)證中心針對(duì)使用率高的 SDK 做了隱私數(shù)據(jù)分析報(bào)告,報(bào)告顯示,在測(cè)評(píng)的 60 款常用應(yīng)用軟件中,共使用了至少 966 個(gè) SDK,平均每款 App 使用 19.3 個(gè)(注:移動(dòng)金融類未計(jì)在內(nèi),因?yàn)樵撔袠I(yè)普遍對(duì) App 進(jìn)行加固,難以確切檢測(cè)出使用的 SDK)。
其中生活服務(wù)類 App 平均使用的 SDK 個(gè)數(shù)最多,為 20.2 個(gè),旅游交通類最少,平均使用 15.4 個(gè) SDK。由此我們可以看出,SDK之于APP開(kāi)發(fā)者們,在風(fēng)險(xiǎn)可控的情況下,并不排斥。
圖 | 各行業(yè) APP 使用 SDK 數(shù)量
數(shù)據(jù)來(lái)源:《常用第三方 SDK 收集使用個(gè)人信息測(cè)評(píng)報(bào)告》/ 南都個(gè)人信息保護(hù)研究中心中國(guó)金融認(rèn)證中心(CFCA)
廣告SDK是絕大多數(shù)App開(kāi)發(fā)者在考慮商業(yè)化變現(xiàn)時(shí),經(jīng)常要用到的。下面我們就對(duì)廣告SDK的功能分類,集成規(guī)范,工作原理來(lái)詳細(xì)解讀,以便APP開(kāi)發(fā)者對(duì)廣告SDK有更深入的了解。
一、APP與廣告SDK
根據(jù)2020年11月全國(guó)信息安全標(biāo)準(zhǔn)化技術(shù)委員會(huì)《網(wǎng)絡(luò)安全標(biāo)準(zhǔn)實(shí)踐指南-移動(dòng)互聯(lián)網(wǎng)應(yīng)用程序(App)使用軟件開(kāi)發(fā)工具包(SDK)安全指引》中對(duì)SDK的分類,常見(jiàn)SDK類型分為16類(見(jiàn)下圖),其中,對(duì)廣告SDK的功能描述是提供廣告展示功能,通過(guò)使用廣告SDK,App提供者可以在App中展示廣告商投放的廣告,進(jìn)而根據(jù)用戶的點(diǎn)擊賺取收益。
廣告SDK在眾多SDK類型中,是比較特殊的一類,其他SDK主要是方便APP自身運(yùn)營(yíng)需要,而廣告SDK它的功能目的是直接的商業(yè)化變現(xiàn)。因此,具備一定規(guī)模流量的想快速獲得收益的APP開(kāi)發(fā)者都會(huì)考慮接入廣告SDK。
資料來(lái)源:《網(wǎng)絡(luò)安全標(biāo)準(zhǔn)實(shí)踐指南—移動(dòng)互聯(lián)網(wǎng)應(yīng)用程序(App)使用軟件開(kāi)發(fā)工具包(SDK)安全指引》
二、廣告SDK分類及用途
廣告SDK的功能是展示廣告,從定義上來(lái)說(shuō),還分廣義的和狹義的廣告SDK,廣義的廣告SDK是指為開(kāi)發(fā)者提供廣告相關(guān)功能(接入廣告、廣告監(jiān)測(cè)等)的軟件開(kāi)發(fā)工具包;狹義的廣告SDK就是指幫助App開(kāi)發(fā)者接入廣告,實(shí)現(xiàn)廣告變現(xiàn)的軟件開(kāi)發(fā)工具包。
從用途上分,可以分為網(wǎng)頁(yè)SDK和APP SDK,網(wǎng)頁(yè)SDK用于網(wǎng)頁(yè)(或小程序)的廣告變現(xiàn),APP SDK用于移動(dòng)應(yīng)用程序內(nèi)的廣告變現(xiàn),APP SDK從編寫(xiě)語(yǔ)言上分,一般分為Java SDK、Objective-C SDK,Java SDK適用于Android,Objective-C SDK適用于iOS。
按照不同廣告領(lǐng)域,可分為展示廣告SDK,激勵(lì)廣告SDK、互動(dòng)廣告SDK等,展示廣告SDK一般用于僅展示廣告素材類型的廣告,使用范圍最為普遍,激勵(lì)廣告SDK一般用于有激勵(lì)場(chǎng)景的APP,像激勵(lì)視頻、積分墻等廣告形式,游戲APP安裝較多,互動(dòng)廣告SDK,多用于像抽獎(jiǎng)、大轉(zhuǎn)盤(pán)等類型的廣告形式,使用范圍廣泛,工具類應(yīng)用較多安裝。
根據(jù)sdk商業(yè)性質(zhì)來(lái)看,可以分為單一廣告SDK和聚合廣告SDK,單一廣告SDK直接用來(lái)進(jìn)行廣告投放,一般開(kāi)發(fā)者多為廣告聯(lián)盟,僅用于需求方的廣告投放,聚合廣告SDK集成多家廣告聯(lián)盟SDK,可實(shí)現(xiàn)多平臺(tái)的廣告投放,開(kāi)發(fā)者多為廣告技術(shù)公司,主要用于方便APP開(kāi)發(fā)者在進(jìn)行多廣告聯(lián)盟變現(xiàn)時(shí)的運(yùn)營(yíng)優(yōu)化。
三、廣告SDK如何接入
一般廣告SDK的開(kāi)發(fā)者都會(huì)有對(duì)接文檔給到APP開(kāi)發(fā)者,APP開(kāi)發(fā)者根據(jù)文檔步驟自助對(duì)接,有問(wèn)題的話再以郵件或工單提交等形式聯(lián)系廣告SDK開(kāi)發(fā)者,有的廣告SDK開(kāi)發(fā)者會(huì)安排專人跟蹤對(duì)接服務(wù),相對(duì)來(lái)說(shuō)處理問(wèn)題會(huì)比較及時(shí)。總的來(lái)說(shuō),不管哪種服務(wù)方式,集成過(guò)程都基本遵循這樣一個(gè)步驟。
Step 1 加入文件:根據(jù)文檔內(nèi)容,將廣告SDK嵌入指定項(xiàng)目目錄中。
Step 2 創(chuàng)建關(guān)聯(lián):建立關(guān)聯(lián)關(guān)系,向廣告SDK添加引用,添加配置、權(quán)限等。
Step 3 代碼寫(xiě)入:應(yīng)用初始化及廣告位開(kāi)發(fā),調(diào)用廣告SDK提供的廣告位模板。
Step 4 測(cè)試聯(lián)調(diào) :測(cè)試廣告流程,是否正常觸發(fā)廣告請(qǐng)求、返回廣告,廣告素材下發(fā)、渲染、展示是否正常,是否流暢,廣告數(shù)據(jù)統(tǒng)計(jì)是否正常等內(nèi)容。
Step 5 更新軟件:?將集成過(guò)廣告SDK的APP上架到應(yīng)用市場(chǎng)
完成以上步驟,廣告位基本能夠請(qǐng)求到廣告,實(shí)現(xiàn)廣告變現(xiàn)。
四、廣告SDK的請(qǐng)求機(jī)制
對(duì)于單一廣告SDK和聚合廣告SDK來(lái)說(shuō),工作機(jī)制基本相同,都是APP啟動(dòng),調(diào)用SDK,觸發(fā)廣告請(qǐng)求,發(fā)送給廣告平臺(tái)服務(wù)器,廣告平臺(tái)服務(wù)器返回廣告,下發(fā)素材,展示廣告,只在發(fā)送廣告請(qǐng)求上,聚合廣告SDK會(huì)多一步轉(zhuǎn)發(fā)動(dòng)作,將廣告請(qǐng)求轉(zhuǎn)發(fā)多家廣告聯(lián)盟平臺(tái),如下圖:
廣告SDK運(yùn)行機(jī)制
區(qū)別在于,在發(fā)送廣告請(qǐng)求上,聚合廣告SDK會(huì)多一步轉(zhuǎn)發(fā)請(qǐng)求的動(dòng)作,將廣告請(qǐng)求轉(zhuǎn)發(fā)多家廣告聯(lián)盟平臺(tái)。
廣告SDK的工作流程已經(jīng)很清晰,但對(duì)APP開(kāi)發(fā)者來(lái)說(shuō),這些可能都不是難點(diǎn),最大的顧慮還是在SDK的安全性上。主要問(wèn)題,一是,SDK安全漏洞。二是,是否預(yù)留“后門(mén)”。三是,數(shù)據(jù)是否濫用。最后,問(wèn)題還是落在這三點(diǎn)上,要避免這些問(wèn)題,最好的方法是對(duì)廣告SDK源碼進(jìn)行核查。
事實(shí)上,現(xiàn)在的做法也是這樣的。一般開(kāi)發(fā)者對(duì)接廣告SDK的時(shí)候都會(huì)對(duì)SDK進(jìn)行審查,但對(duì)于不是很了解廣告行業(yè)或者技術(shù)能力不足的開(kāi)發(fā)者,在SDK審查上,既有顧慮又可能無(wú)從下手,這里AdScope在SDK核查方面給出一些方法,以便于開(kāi)發(fā)者操作。
五、廣告SDK的核查
廣告SDK的核查工作概括起來(lái)主要有兩個(gè)方面:一查什么?二怎么查?
1. 查什么?
1)來(lái)源安全性評(píng)估
SDK提供者的基本信息,溝通反饋渠道,隱私政策鏈接地址,提供者安全能力,SDK基本功能,SDK版本號(hào)等。
2)代碼安全性評(píng)估
是否存在已知的惡意代碼,是否存在已知的安全漏洞,是否申請(qǐng)敏感權(quán)限,是否嵌入其他SDK。
3)行為安全性評(píng)估
調(diào)用的敏感權(quán)限、目的和頻率,收集的個(gè)人信息類型、目的和頻率,個(gè)人信息回傳服務(wù)器域名、IP地址、所在地域,是否存在熱更新行為及熱更新是否可主動(dòng)關(guān)閉,傳輸數(shù)據(jù)是否加密,是否存在單獨(dú)收集用戶個(gè)人信息的界面,是否存在后臺(tái)自動(dòng)啟動(dòng)和關(guān)聯(lián)啟動(dòng)后收集個(gè)人信息的行為等。
2. 怎么查?
1)文檔審核
在接入SDK前,對(duì)廣告SDK開(kāi)發(fā)者提供的文檔進(jìn)行核查,根據(jù)前面提到的幾項(xiàng)主要內(nèi)容,對(duì)照文檔查看是否都符合要求,還有雙方未達(dá)成一致或有爭(zhēng)議的內(nèi)容。
2)工具抓包
接入SDK后,在進(jìn)行測(cè)試過(guò)程中,使用工具對(duì)廣告SDK網(wǎng)絡(luò)工作流進(jìn)行抓包操作。通過(guò)抓包主要驗(yàn)證安全性評(píng)估內(nèi)容,并查看是否有在文檔和商務(wù)談判中未涉及到的隱秘及可疑行為。
市面上的抓包工具很多,這里主要介紹適合移動(dòng)端開(kāi)發(fā)者使用的抓包工具,Charles,F(xiàn)iddler,Replica(移動(dòng)端APP),這三款都不錯(cuò),這里比較推薦Charles,它支持Windows,Mac,Linux,安裝使用簡(jiǎn)單,功能強(qiáng)大。
3)第三方認(rèn)證
通過(guò)具有安全審核資質(zhì)的第三方公司來(lái)對(duì)廣告SDK進(jìn)行審核工作,出具第三方評(píng)估報(bào)告,一般也是在接入后的測(cè)試環(huán)節(jié)進(jìn)行。第三方認(rèn)證機(jī)構(gòu)也很多,比如360安全專家、網(wǎng)易易盾、騰訊安全等,但很多第三方的機(jī)構(gòu)都是付費(fèi)的。
作為一種對(duì)接方式,廣告SDK在APP商業(yè)化變現(xiàn)的過(guò)程中扮演重要的角色,在移動(dòng)廣告事業(yè)的發(fā)展中也起著非常關(guān)鍵的作用。正是由于SDK在移動(dòng)廣告行業(yè)中的廣泛使用,才創(chuàng)造了移動(dòng)互聯(lián)網(wǎng)廣告市場(chǎng)的萬(wàn)億規(guī)模,為社會(huì)帶來(lái)巨大的經(jīng)濟(jì)價(jià)值。
SDK創(chuàng)造的價(jià)值不應(yīng)被忽視,而只談?dòng)绊?,SDK需要的是監(jiān)管和合規(guī),而不是取締。欣喜的是,政府及監(jiān)管部門(mén)正在出臺(tái)多項(xiàng)法律法規(guī)積極治理,相信不久的將來(lái),SDK將迎來(lái)一個(gè)凈化過(guò)的市場(chǎng)環(huán)境,App開(kāi)發(fā)者與SDK開(kāi)發(fā)者終將以建立互信的商業(yè)合作關(guān)系。
本文由 @ADSCOPE 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)作者許可,禁止轉(zhuǎn)載。
題圖來(lái)自Unsplash,基于CC0協(xié)議
- 目前還沒(méi)評(píng)論,等你發(fā)揮!