移動開發構架漫談——反劫持實戰篇

汽車之家是全球訪問量最大的汽車網站。爲廣大汽車消費者提供買車、用車、養車及與汽車生活相關的全程服務,以全面、專業、可信賴、高互動性的內容,多層次、多維度地影響最廣泛的汽車消費者,是中國最具價值的互聯網汽車營銷平臺。

在UPYUN Open Talk 第八期《移動應用技術架構的解讀》技術沙龍上,來自汽車之家技術架構師莫鬆爲開發者分享APP產品遭遇到網絡劫持後的解決方案,並且分析產生劫持原因以及反劫持解決方案。

什麼是 http劫持,DNS劫持爲何物?

HTTP 劫持是在使用者與其目的網絡服務所建立的專用數據通道中,監視特定數據信息,提示當滿足設定的條件時,就會在正常的數據流中插入精心設計的網絡數據報文,目的是讓用戶端程序解釋“錯誤”的數據,並以彈出新窗口的形式在使用者界面展示宣傳性廣告或者直接顯示某網站的內容。

DNS 劫持又稱域名劫持,是指在劫持的網絡範圍內攔截域名解析的請求,分析請求的域名,把審查範圍以外的請求放行,否則返回假的 IP 地址或者什麼都不做使請求失去響應,其效果就是對特定的網絡不能反應或訪問的是假網址。

【實例 1】

優酷客戶端頁面上方的小廣告,並不是優酷所添加的,但是卻出現在優酷應用中。


【實例 2】

傳統瀏覽網頁經常會彈出很多彈窗廣告,現在這種情況也移植到移動互聯網上。經常會彈跳出不堪入目的內容,甚至利用更加惡劣的方式彈跳廣告內容。


【實例 3】

這是汽車之家的一個頁面,最後在客戶產生劫持的情況下,直接替換成了另外一個頁面。


產生的原因

①廣告插碼

發佈“流氓廣告”的廠商以推銷他們的產品形式,將廣告投放到各個應用中。

②中小運營商節省流量成本,使用緩存技術,製造一個網速“飛快”的假象

一些中小運營商或者寬帶運營商,爲了節省流量成本,建立很多類似於緩存技術,多是做假象,直接在內部做一個緩存。

③惡意攻擊

競爭對手的攻擊,都是屬於劫持類的。應用被非法廣告植入,數據被非法緩存,被惡意攻擊,已成爲一種危害。

怎麼劫持的呢?

劫持主要是:向客戶端發起一個請求向DNS服務器,然後去請求我們的IP。這有三個因素,第一來自網絡運營商的機房,這時候有一些漏洞,可能會被內部一些人員或者是一些牟利的機構加以利用。對請求的數據還有來源進行一些篡改。第二,常見的就是“三大運營商”經常做一些推廣,嚮應用接口直接發一些他們的推廣信息。他們會直接去劫持攔截你的數據,返回運營商,提示你充值一些數據。


造成的危害

①應用數據無法更新
②非法跳轉,導致頁面數據無法展示
③彈出廣告影響視覺
④內嵌非法內容影響 APP 產品形象

反劫持實戰

①數據合法性校驗

合法性管理校驗是唯一評判這個數據是否有效的一個手段。他包括兩個內容,一個是數據是否完整,還有一個數據的時效性。

合法性的判斷來說我們還是慣用的,會去用一個內容生成一個校驗串,進行一個驗證。如果校驗串不匹配,會判定爲數據是非法的,被篡改的。

②數據時效性校驗

時效性的判斷,我們會在數據內容有一個約定,證明數據產生的時間點,客戶端有一個校驗保證。針對應用裏邊的頁面內容,會對頁面的內容以及跳轉地址會進行一個黑白名單的匹配,這樣來去判別這些數據是否是合法的時效性保證的。

解決方案

①域名劫持

首先針對域名劫持來說,如果是DNS劫持,根據它的原理DNS是指向被篡改的IP,需要打破通用的DNS獲取的方式。所以使用一種Http DNS的技術。這個技術簡單來說就是使用Http的方式,將以往的傳統的DNS協議替換爲Http包裝的域名解析的一個IP地址的集合。如果是針對Http鏈路層的解釋,數據篡改的內容,直接對鏈接進行修改的重試,可以讓錯誤的請求有機會通過我們加設的反向代理機制,幫助他在獲取正確的數據。

【HttpDNS的原理】

首先這是一個終端用戶,他以前獲取目標服務器的方式直接提供域名,訪問目標服務器。現在如果他根據之前的圖示,他走傳統的DNS解析服務器方式的話,如果遭受DNS解析,他可能指向錯誤的服務器。這個HttpDNS方式就是打破傳統的DNS解析的路徑,將DNS通過一個HttpDNS服務器的方式去幫他去從真正的DNS服務器,把目標IP方式返回到最終用戶。用戶再根據返回的真正的IP地址去返回目標服務器。通過這個方式去對DNS劫持方式進行一個有效的訪問率的反制。有時候他返回的IP可能不止一個,客戶端拿到IP以後,在客戶端來說是注意加速請求的響應,客戶端有對被審的IP進行一個測速。每次會根據一個失效週期會階段性的對這個IP進行速度的測速,實時轉換。這樣保證我們提供的IP是最快速,能夠讓用戶這些請求快速的達到正確的。  


②運營商緩存

運營商緩存這種情況來說,他也是緩存的機制。可以在他的請求的Url串裏面添加,緩存運作,這時候可以把緩存的方式來得到解決。

③非法跳轉

非法跳轉是在客戶端的瀏覽器的加載,應用黑白名單策略的匹配。通過這些方式來去實現反劫持的一些措施。  

④非法內容插入

更多方式

①網絡擇優

②劫持日誌系統

首先他會能夠根據我們之前的如何判定一個劫持的情況,在客戶端蒐集劫持的一個狀況,他會把劫持的類型部分被劫持的接口給客戶端,通過在有網比較快速的情況下,WIFI情況下發送中心服務器去實現這樣的蒐集。並且他是經過壓縮,儘可能的保護流量的節省。

實時數據檢測:


這是反劫持後臺日誌一個位置的圖表,縱向是這一天當中發生的劫持的數量,單位是接口請求數量。橫向是每個時間點他產生劫持的情況。今天從0點到24點區間產生劫持的一個數量。還有一個數據是橙色這個線,昨天的數量,藍色是今天,我們會有一個兩天之內的對比,用來發現變化。某些時候運營商的DNS解析,他有時候會爆發性的增長,他在某一天有別的活動,他給你劫持很多接口,向移動用戶返回他們的促銷信息,他被篡改之後的彈窗或者是嵌入式廣告。我們能在圖表裏面發現這個類別裏面的情況,有時候運營商做這個事情他的數量會激增,跟前一天有很強烈的比較。出現這樣的情況,通過日誌裏它的劫持樣本,就能發現他具體的原因。如果當原因發現某個地區的用戶,出現大面積的接口訪問錯誤,我們通過這個表能夠找到答案

成功率對比:


這個表格是產生劫持以及客戶端去用我們反偵策略去重試結果反饋表。白色這個柱狀高度表現是他產生的總體數量,綠色這部分表示是改善之後一個成功的數量。綠色這部分是產生的劫持,使用反劫持策略,成功修復的一個數量。通過這個表格,不斷的調整優化反劫持的策略,逐漸去努力把白色區域慢慢消除,或者是減小。實際上分析的時候發現,這個數據表跟當日PV還是能夠吻合,也同時驗證判斷的結果。比如對劫持類型,劫持發生的時機那種方式是有效的。這種日誌系統不管是對於PV或者用戶行爲統計還是對這種劫持的防禦工作來說都是很重要。

發佈了88 篇原創文章 · 獲贊 18 · 訪問量 76萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章