前段時間,二狗子的朋友圈被工信部發布的《關於下架侵害使用者權益 App 名單的通報》給刷屏了。公告中指出有 90 款 App 未按照要求完成整改將會下架。而這 90 款 App 涉及全國各地教育、遊戲、安全、新聞等諸多領域。同時通報中提到,有 5 家企業在 App 不同版本中反覆出現同類問題,包括違規收集個人資訊、強制使用者使用定向推送功能、頻繁過度強制索權、欺騙誘導使用者下載等。工信部表示將依法暫停其違規行為,予以直接下架處理。
看到這則公告後,本著吃瓜心理,二狗子順手去搜了一下這 5 家企業,發現他們已經紛紛發表了回應,表示平臺排查後發現問題主要在於第三方 SDK 等方面。
其實這類第三方 SDK 外掛違法呼叫手機資訊的行為,早在 2020 年的 315 晚會上就被央視曝光過了,目前網路上也經常會出現這類新聞。
那為何 SDK 這麼危險,軟體廠商確還要頻頻使用呢?但是如果要說 SDK,那肯定離不開 API。
API 的出現
如果想較為詳細的瞭解 API 大家可以閱讀《白話科普,10s 瞭解 API》,這裡就給大家簡單介紹一下。
API 的全稱是 Application Programming Interface,中文名為“應用程式介面”,一般是指一些服務廠商預先定義好的一組向外開放的方法。這些方法直接對應服務廠商的自家服務功能,方便應用程式或開發人員快速呼叫功能,而無需理解服務廠商工作機制的細節。例如使用者如果使用了又拍雲簡訊服務來開發簡訊傳送的功能,那隻要按照文件選擇想要實現的功能,然後呼叫簡訊 API 介面來呼叫想用服務即可,並不需要知道簡訊如何傳遞給客戶的技術細節。
SDK 的誕生
簡單瞭解了 API,我們再回到本文最初所說的 SDK 上來。
所謂 SDK 其實是"軟體開發工具包",即 Software Development Kit 的縮寫。它一般是指通過第三方服務商實現產品功能的軟體工具包。通常,SDK 是由專業的公司提供的,為特定的軟體包、軟體框架、硬體平臺、作業系統等建立應用軟體時的開發工具集合。可以將移動支付技術、語音識別技術,或者儲存技術等進行專業集合。它有效減少了開發者在新增功能時對產品每一項功能進行開發的時間。
和 API 一樣,SDK 由服務廠商提供了,開發者只需要接入相關 SDK,然後做好相關功能介面的聯調即可,至於底層邏輯、資料儲存等等都不需要去考慮。
API 與 SDK 的區別
那麼從結果上看都是讓開發者使用三方服務功能的 API 和 SDK 到底有什麼區別?為什麼說 SDK 就離不開 API?
其實在更多場合下,API 更像是 SDK 的一個子集,這是因為:
-
API 通常是一個介面方法,有特定的功能;而 SDK 是一個很多功能的集合體,更像是一個工具包;
-
API 通常為單個資料介面的形象,SDK 則相當於一個工具環境,通常除了包含了服務的所有 API 功能;
-
SDK 相較於 API 封裝層次更高。
為什麼 SDK 經常翻車
目前因為各家服務商的提供功能越來越多,同時使用者對於 App 的功能需求也逐漸增大,如果每一個功能都是自己開發,那時間和成本都無限延長。因此公司會更偏向選擇第三方 SDK 工具包來實現這些功能。這就導致可能很多公司都在用同一個 SDK,一旦這個 SDK 出現了隱私洩露,那牽扯到的也不再僅是一家公司的 App。
那麼,如何避開這樣的隱私侵害呢?
對於開發商而言,要儘可能選擇有一定市場基礎的第三方 SDK,比如儘量使用蘋果和谷歌商店裡選用的 SDK 進行整合。
從個人層面來講,在下載 App 時,最好選擇惡意密度較低的應用商店,比如蘋果的 App Store、安卓手機的官方應用商店,不要隨意在網站上下載來歷不明、未經稽核的軟體。同時面對安裝 App 時彈出的各種許可權申請,在給出自己的位置資訊、手機通訊錄等隱私許可權之前一定要認真確認。
最後,國家也一直在政策層面上對此進行監管。要求網路運營者對接入其平臺的第三方應用,應明確資料安全要求和責任,督促監督第三方應用運營者加強資料安全管理。
目前國內手機廠商也越來越重視使用者隱私,推出“照明彈”等隱私保護功能。一旦這些 App 後臺行為的呼叫逐漸清晰和明朗化,系統也願意給出更多限制性手段後,守住自己的私密資料,大概就不會成為一個難題了。