HTTP劫持和DNS劫持 實際JS對抗

2021-08-31 21:39:49 字數 1895 閱讀 1964

1、對於div注入的,可以初始化時檢查全部html**。

檢測是否被劫持比較簡單,但對抗就略麻煩,這個在說完第2點之後再解釋。

2、對於js注入,可以在window監聽domnodeinserted事件。

事件有srcelement,可以獲取到剛插入的dom節點。 

這裡開始簡單粗暴的做正則匹配,匹配所有url。 

再逐個比較是否白名單網域名稱,如果不是,則判定為劫持。可以上報,同時可以移除dom.parentnode.removechild(dom); 

但這樣容易造成誤傷,因為正常頁面中可能有外部鏈結,或者一些純文字url。

後來改為

但這樣也有漏洞,如果運營商通過div+style設定背景的方式顯示廣告圖,上述**就無法檢查出來。

那麼,就還需要檢查style的情況,但style情況就更複雜了。可能是,也可能是inline樣式,最終還是要回到url識別上。 

那麼做個折衷,我們繼續用最初的純文字正則匹配url的方式,但跳過純文字的情況(例如修改div的內容,替換為一段文字),只檢查插入dom的情況。 

具體方法是

if (!dom.outerhtml)
回到剛才第一點的問題,監測第一點的情況,可以用一樣的做法。但是,對抗就麻煩很多,因為廣告dom節點可以插在body第一層,也可以插在某個內容div中。如果簡單粗暴的把廣告dom節點到body的全部div都移除,可能會造成大面積的誤傷。 

所以,針對這個情況,我們還在做進一步的監測統計。

3、對於iframe的情況,要檢測非常簡單,只需要比較self和top是否相同。

呃,我們仔細看,還可以發現運營商做這個劫持也非常粗暴,如果頁面依賴hash,就會引起錯誤了。 

見招拆招,這個比較好辦,我們只需要把top的位址修改為self位址即可。一來沖掉iframe,二來繞過劫持。

function checkiframehijack()  else  else 

try catch (e) }}

}

為了安全起見,防止運營商有新招數,所以這裡只嘗試一次,用iframe_hijack_redirected引數標記,已經嘗試過。

按照統計情況來看,運營商還是挺猖狂的,平均大約有6~10個劫持上報,大概佔整個qq健康使用者的3%到5%。

HTTP劫持和DNS劫持 實際JS對抗

1 對於div注入的,可以初始化時檢查全部html 檢測是否被劫持比較簡單,但對抗就略麻煩,這個在說完第2點之後再解釋。2 對於js注入,可以在window監聽domnodeinserted事件。事件有srcelement,可以獲取到剛插入的dom節點。這裡開始簡單粗暴的做正則匹配,匹配所有url。...

HTTP劫持和DNS劫持 騰訊的實際業務分析

簡單介紹一下http劫持和dns劫持的概念,也就是運營商通過某些方式篡改了使用者正常訪問的網頁,插入廣告或者其他一些雜七雜八的東西。首先對運營商的劫持行為做一些分析,他們的目的無非就是賺錢,而賺錢的方式有兩種 1 對正常 加入額外的廣告,這包括網頁內浮層或彈出廣告視窗 在具體的做法上,一般分為dns...

DNS劫持 流量劫持,HTTP HTTPS劫持

dns劫持 dns劫持就是通過劫持了dns伺服器,通過某些手段取得某網域名稱的解析記錄控制權,進而修改此網域名稱的解析結果,導致對該網域名稱的訪問由原ip位址轉入到修改後的指定ip,其結果就是對特定的 不能訪問或訪問的是假 從而實現竊取資料或者破壞原有正常服務的目的。dns劫持通過篡改dns伺服器上...