聯通近日在全國範圍內大建緩存服務器,並將用戶正常訪問 HTTP 的請求劫持到緩存服務器以達到節省骨幹網帶寬與網間流量的問題。抛開此舉是否違法不談,我們今天討論一下這種劫持行為的危害。
一、可能造成網站和 APP 功能故障。
1. 緩存更新及失效時間對用戶及网站不可控,緩存的舊數據和新數據無法在時間上保持一致性,可能引發一些「奇怪」的問題。比如好多軟件的最新版本下載地址是不變的,如
http://www.example.com/download/latest.exe ,由于緩存的原因會讓你一直下載到舊版本。這可能會影響到部分軟件的自動更新、自動升級功能。還有如網頁中部分資源引用到舊數據導致網頁排版和功能異常,驗證碼被緩存導致驗證碼怎麼都輸不對等問題。另外,由于劫持的方式是使用 HTTP 302 重定向指令,有的應用可能只接受 HTTP 200 為正確的響應,不會識別 302 指令,造成通信故障。
2. 從技術上緩存系統只能通過 URL 來區別不同的資源,不能識別具有相同 URL 的不同資源。這會導致資源加載錯誤,針對某一用戶的資源被所有人共享等問題。比如看視頻時,出現前一段和後一段內容不一致,帶有用戶敏感信息的資源被所有人看見等安全問題。
二. 緩存服務器具備篡改或出售緩存數據的隱患,對信息安全不利。
三. 緩存服務器故障時,會造成大量用戶「部分斷網」。
四. 緩存服務器帶寬和處理性能有限,據網上反映由於緩存服務器經常報 403 、 502 錯誤,導致資源無法加載,或由於緩存服務器超載導致加載速度緩慢。
五. 緩存服務器可能觸發部分網站的反爬蟲(反機器人)、反盜鏈機制,緩存的內容是服務器報錯信息,導致資源無法加載。
六. 破壞了 URL 對用戶的透明性。假設用戶將劫持後的鏈接分享給其他人,而聯通對緩存服務器做了訪問控制,將會導致鏈接無法在外部打開;另外如果緩存失效而又沒有及時更新的話,可能導致用戶無法通過此 URL 訪問被引用的資源。
七. 損害了 IDC 和 CDN 的利益,此種網絡劫持使 IDC 和 CDN 的流量大幅減少,影響 IDC 和 CDN 的流量收入。題外話,話說聯通為何不提供商業 CDN 服務而偏要搞劫持?
八. 目前聯通的劫持依靠 TCP 搶答的方式,但原始數據包還是會到達目標服務器並被正確響應。就我抓包的情況來看,雖然你訪問資源時被 HTTP 302 數據包重定向到了聯通的緩存服務器,但原目標服務器的 HTTP 200 響應還是會被送到用戶端,且由於得不到用戶端的確定不斷觸發超時重傳,極大地浪費了用戶帶寬。
有人說這是聯通為提升用戶體驗而做的好事,不應該去反對。我是持相反意見的。就目前來看,聯通的骨幹網帶寬和國際出口帶寬還算充足,劫持帶來的問題要比好處大得多。聯通要真想向用戶提供一流的用戶體驗,只能靠擴充骨幹網帶寬和國際出口帶寬,像部分小區寬帶運營商一樣搞緩存劫持是沒有出路的。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/252028
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.