簡說
http劫持分兩種,一種是DNS劫持(域名劫持),另外一種是關聯內容劫持。 後者是基於前者發展起來的,比較高級的劫持手段。瀏覽器
1、DNS劫持(域名劫持)
概念:
在可劫持的網絡範圍內,攔截 域名解析 的請求,分析其域名,把攔截條件範圍外的放行,範圍內的返回篡改後的ip或失去響應。緩存
效果:
使特定網絡沒法響應或返回假地址。服務器
本質:
對DNS解析服務器作手腳或使用僞造的DNS解析器。網絡
非劫持過程:
- 客戶端發起域名請求到DNS解析服務器(通常是LocalDNS);
- DNS服務器將域名轉換爲公網ip(在ip運營商處查詢),將請求轉發給目標服務器;
- 目標服務器響應後將數據信息回傳給DNS服務器;
- DNS服務器將響應信息轉發回客戶端。
劫持過程:
- 客戶端發起域名請求到DNS解析服務器(通常是LocalDNS),但此時DNS解析服務器被攻擊篡改;
- 被攻擊篡改後的DNS解析服務器將請求轉發給虛假服務器;
- 虛假服務器返回響應信息給被攻擊篡改後的DNS解析服務器(也可能直接不響應);
- 被攻擊篡改後的DNS解析服務器將虛假的響應信息轉發回客戶端。
解決辦法:
DNS劫持的本質是運營商的DNS解析服務器被攻擊篡改,因此可使用本身的解析服務器代替或在客戶端直接以ip的形式將請求發出去,繞過運營商的DNS解析服務器,從而避免被劫持。性能
2、內容劫持
最初出發點:
運營商爲了加快用戶的訪問速度同時減小本身的流量損耗而作的一個劫持會話後的緩存機制,因此負載能力弱的鏈路上的流量,會出現劫持的現象。學習
本質:
TCP會話劫持。加密
劫持流程:
- 客戶端發起資源請求到運營商處;
- 運營商收到請求先檢索緩存池,如有相關緩存,直接返回;若無數據,將請求轉發給目標服務器;
- 目標服務器響應並回傳數據,運營商劫持了會話及其中回傳數據,存入緩存,並返回給客戶端。
注意:
此時若是有人惡意篡改了緩存池,或者,直接劫持了會話,在真正的服務器響應以前回傳了虛假的數據,那麼客戶端將獲得錯誤的響應信息,同時真正的服務器響應數據將被丟棄。操作系統
解決辦法:
使用https加密協議,https=http + ssl。server
DNS解析過程:
- 請求發起時,操做系統將檢查瀏覽器緩存中是否存在該域名對應的、解析過的ip,若存在,中止解析。
- 若不存在,瀏覽器將檢查操做系統的host文件中是否存在對應的ip域名映射,若存在,則使用並中止解析。
- 若不存在,操做系統將域名發送給host文件中配置的LocalDNS(即本地區域名服務器,此服務器提供本地互聯網接入的DNS解析服務,性能良好,通常會緩存域名解析結果),90%域名解析到此完成。
- 若LDNS未命中,就進入Root Server域名服務器請求解析。
- root server服務器給LDNS返回所查域名的主域名服務器地址(gTLD server,國際頂級域名服務器,全球13臺)。
- LDNS再向gTLD server發起請求。
- 收到請求後,gTLD服務器查找並返回該域名對應的Name Server域名服務器的地址,這個Name Server就是註冊域名服務器。
- Name Server服務器查詢存儲中域名、ip的映射表,將對應ip和ttl值返回給LDNS。
- LDNS緩存域名和ip的對應關係及ttl值。
- LDNS將結果返回給客戶端。
注意:
解析結果具有時效性。ip
寫在最後
須要聲明的一點是,我不是一個教授者,我只是一個分享者、一個討論者、一個學習者,有不一樣的意見或新的想法,提出來,咱們一塊兒研究。分享的同時,並不僅是被分享者在學習進步,分享者亦是。
知識遍地,拾到了就是你的。
既然有用,不妨點贊,讓更多的人瞭解、學習並提高。