今天,差評君打開手機的文件管理器,突然發現相冊裡多了好多微信的聊天圖片。
這麼一看果然還是微博的沙雕圖比較多。。。
可是奇怪,差評君并沒有在微信裡手動保存過這些聊天圖片啊。
經過一陣檢查,差評君發現這些圖片都來自手機存儲裡一個名叫 tencent( 騰訊 )/ MicroMsg( 微信 )的文件夾。
除了聊天過程中發送的圖片,甚至聊天中發送的語音也安安靜靜的躺在這個文件夾的犄角旮旯裡。
紅色圖标的 .amr 文件就對應了一條微信語音消息
這可出大事了。要知道,微信裡的語音可是連轉發都轉發不了的,微信官方也專門解釋過,這是為了用戶的隐私考慮。
結果我卻能直接在文件管理器裡,看到所有的語音文件,還能随便複制、粘貼、傳到電腦上?
不過等差評君想打開的時候,發現音頻被加密了,打不開。
看起來似乎是虛驚一場。。。但差評君眉頭一皺,發現事情并沒有那麼簡單!
這玩意兒加沒加密是一回事,可為啥要老老實實地躺在誰都可以訪問的地方呢?你會把自己的保險箱扔到馬路上嗎?
難不成是我手機裡有病毒,已經悄悄破解了微信的聊天記錄?
一想到有這麼個可能,差評君吓得趕緊把世超拽了過來一探究竟。
結果還沒等差評君說完,就收到了世超的一個大白眼:
「 别擔心,你手機沒中毒,這文件就是微信自己放的,我大學的時候還用這招提取過微信裡的語音文件呢。 」
世超這麼一說,反而給差評君搞了個雲裡霧裡,又纏着世超問了半天,才搞明白為什麼微信的聊天文件出現在了手機的文件管理器裡。
( 大家先放心,具體的聊天記錄都是安全的,隻是聊天圖片和語音有洩露的可能 )
如果你和差評君一樣用過安卓手機,想必遇到過這種情況:
首次啟動一個 App 時,會彈出一個「 為了優化您的使用體驗,我們需要 XXX 權限 」的提示;接着就會一股腦地彈出來一堆索要權限的提示框。
其中通常會有一項名為「 存儲空間讀寫 」的權限。
像電話、短信,我們都知道是很危險的權限。但像存儲空間讀寫這種看起來好像沒什麼影響的權限,通常 App 要了,我們也就給了。
差評君的手機上的大部分國産 App 都申請了存儲空間權限
一般情況下,App 要這項權限的理由是「 保存必要的數據 」。
但實際上,App 要想保存數據的話,根本不需要申請存儲空間讀寫權限。
因為谷歌早就考慮到了 App 存儲數據的問題,在安卓系統裡專門給每個 App 都劃分了一個獨立的「 内部存儲 」。
來源:谷歌開發者文檔
就好比我們住酒店,會拿到一張門卡,門卡隻能打開自己入住的房間,打不開别人入住的房間。
如果說手機就是那個酒店的話,那 App 是拿了房卡的住客,内部存儲則是 App 的房間,每個 App 都是沒法看到對方保存過的數據的。
所以要是隻說 App 的數據存儲方式,安卓其實和 iPhone 是一樣安全的。
不僅如此,安卓還能自動識别「 内部存儲 」裡的臨時文件,緩存超過一定大小後就會被自動清理。
( 所以其實我們本來不需要市面上各種「 垃圾清理工具 」的,系統本身就可以幫我們全搞定了。 )
但安卓和 iPhone 最大的一點區别就是:安卓這家酒店,它有一個特别大的「 酒店大堂 」。
安卓提倡開放,所以在内部存儲之外又設置了一個「 内部共享存儲空間 」( 簡稱存儲空間 )。
像我們插上 USB 線,能在電腦裡直接看到的手機目錄,就是這個内部共享存儲空間。
本來這個設計是方便給用戶傳照片、傳歌曲的,結果卻被 App 開發者們當成了可以用來鑽的孔子。
内部空間雖然好,但開發者也需要更認真地設計自己的 App 數據保存結構。
如果因為開發者自己的疏忽,不小心把 App 的重要數據保存到了安卓系統的緩存目錄,到時候數據被删了都沒地方哭去。
開發者需要認真設計自己 App,才不會在運行時出錯
所以比起掉頭發去費力設計存儲方案來解決這個問題,當然還是把東西一股腦扔到「 三不管地帶 」來的更省事了。
而「 内部共享存儲空間 」就是這個三不管地帶,隻要 App 從用戶手裡拿到了存儲空間讀寫權限,就可以想幹嘛幹嘛了。
而微信,恰巧就是這千萬 App 大軍中的一員。
這個操作,在安卓開發界早就不是什麼秘密了,像 alipay 文件夾是支付寶生成的,netease 文件夾是網易相關的 App 生成的,而這些還是願意自正身份的。
更有一些 App 會把文件叫起名叫 data( 數據 )、system( 系統 )或者 .SystemConfig( 系統參數 )這類令人不敢輕易删除的名稱。
就好像有個人,不想去費腦筋做垃圾分類,所以就偷偷挖了個坑,把垃圾給埋了,旁邊還豎了個「 内有高壓線纜 」的牌子吓唬人。
開發者不但不優化自己的 App,反而想方設法讓用戶給權限
差評君發現,假設我們有所顧慮,拒絕給 App 授權訪問存儲空間,App 馬上就會「 甩臉子 」,自己結束運行。
直到什麼時候點了允許,才能繼續進入到 App 後續的界面。
一件本來不那麼光彩的事,随着這麼幹的開發者越來越多,反而變得「 名正言順 」了起來。
如果開發者隻是犯懶,把自己的數據導出亂扔,那對我們來說無非就是目錄亂一點,需要額外花點精力清理存儲垃圾。
但最要命的是,獲得了這項權限的 App,實際上可以讀取共享存儲空間内的所有文件!
别忘了,這個共享存儲空間就好像酒店的大堂,一個 App 放在這裡的東西,自然别的 App 也可以随便查看。
一旦懷有壞心思的 App 獲得了存儲空間權限,不但能讀取到我們拍攝的照片和視頻,像微信這種沒有規範存儲自己數據的 App 也有信息洩露的風險。
如果這些圖片裡有我們拍攝的身份證照片、自拍近照,那很有可能下個月就能收到網貸公司的催債電話了。。。
雖然我們有心防範這種問題,但在國内,存儲空間權限已經被開發者搞成了「 必需權限 」,導緻用戶根本沒法分辨哪些 App 包藏禍心 。
比如前一陣就有用戶發現京東金融 App 偷偷上傳相冊圖片,但之後官方回複稱,隻是預先收集了可能會用于客服咨詢的屏幕截圖。
這件事情雖然直到最後都沒有定論,但也從側面證明了差評君說的事情是很有可能會發生的。
說不定現在你手機裡就存在着某個 App,表面看着無害,實際卻在後台偷偷收集并上傳着你的相冊圖片和微信語音數據。。。
微信的整體設計顯然是在乎用戶隐私的,比如在 App 内可以轉發圖片、視頻、附件,但就是不能轉發語音。
差評君後來發現,現在微信的語音文件,已經不能像世超大學時那樣,直接使用手機自帶播放器播放了。
顯然微信團隊也發現了這個問題,這才給語音文件套上了一層加密,隻有騰訊自家的「 騰訊文件管理器 」才能正常播放。
但是你既然都意識到了,為什麼不能一開始就把它做好啊!
微信作為騰訊的頭牌産品,開發人員不可能在這上面犯懶,現在的做法難道是當初欠下的「 技術債 」?
顯然微信現在的解決辦法,差評君覺得還不夠:隻要語音文件還暴露在公共存儲空間,我們的隐私就依舊有暴露的可能。
畢竟這個世界上有人研究加密技術的同時,也有無數的人在研究解密技術。
BAT 作為國内互聯網的頭部企業,在 App 的質量上沒起表率作用,更别提其他國内小廠商的 App 了,濫用存儲權限現象常常發生。
存儲權限被濫用,谷歌曾建議大家不要這麼做,國内的《安卓綠色應用公約》也對相應内容提出了要求,但響應者寥寥無幾。
《 安卓綠色應用公約 》中建議避免獲取存儲空間權限的相關條款
畢竟「 建議 」和「 公約 」不是強制的,開發者不願意,誰也沒辦法強迫。
說不動開發者,谷歌幹脆在安卓 10 的測試版中強行隔離了 App 的存儲空間讀寫權限,隻允許 App 訪問相冊和其他一些文件夾。
即便是這種不需要開發者做多少改動的辦法,也遭受了開發者的強烈抵制,搞得谷歌不得不按下這項改動,宣布推遲到安卓 11 再強制執行。。。
我們老說用 iPhone 省心,其實如果按照谷歌對安卓的設想,用安卓也可以很省心。
但就像一塊沒有圍擋的草坪,即使旁邊立起了警示牌,也依舊會被踩得面目全非。
顯然,一些什麼「 建議 」和「 公約 」根本沒法就能讓開發者做出改變的,公約需要搭配有力的執行手段,才能發揮出應有的效果。
在工信部的統一推送聯盟與《 安卓綠色應用公約 》聯手後,事情明顯出現了好轉。
差評君又檢查了一遍自己的手機,發現包括京東、知乎、愛奇藝和手機淘寶在内的不少頭部 App,已經可以在不授予存儲空間權限的情況下正常運行了。
有些事情,在技術上可能并沒有那麼難,隻是因為缺乏強力的外部監管導緻一拖再拖。
差評君相信,隻要安卓生态的各個環節都齊心向上了,安卓手機的使用體驗未必會比 iPhone 差。
特别感謝:馮森林先生對本篇文章撰寫提供的技術支持。馮森林( Oasis Feng ),《 安卓綠色應用公約 》發起人,開發了綠色守護、Island、Nevolution 等增強安卓使用體驗的 App,前阿裡無線事業部資深技術專家。想要了解更多數碼知識,獲取最新科技資訊,那就趕緊關注我吧~
我們評論見~
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!