濮阳杆衣贸易有限公司

主頁 > 知識庫 > 簡單分析網站流量劫持防范措施(圖文)

簡單分析網站流量劫持防范措施(圖文)

熱門標簽:杭州下沙地圖標注 地圖標注蘋果店 辦理無線400電話 地圖標注重疊怎么辦 400電話太原怎么辦理 北京怎樣申請400電話 電話機器人19 河北迅鴿 浙江電銷卡外呼系統(tǒng)供應商 廣東外呼系統(tǒng)招商

  前幾天上網打開163首頁時,發(fā)現(xiàn)頁面底部莫名其妙的出現(xiàn)一個邊框。這在以前可是未曾有過的,而且以后也絕不可能會有這么丑陋的設計。

  趨于好奇心,立刻在邊框上點了右鍵審查元素。尼瑪,不看不知道,網易首頁的HTML何時變得這么劣質了?

  沒有doctype聲明,連title元素都沒有。script還是language=JScript風格,這得追溯到多少個世紀前了~ 最劣質的是框架居然還是frameset>元素。。。

  不用說,這顯然不是網易的頁面。頁面里的ad字樣,早已深深的出買了它,這就是個廣告頁面!

  話說生在天朝,對于各種劫持早已司空見慣。

  在網頁里劫持廣告,油價2塊錢一升的時代就有了,過了世界末日依舊存在,說明其中的利益是巨大的。

  不用計算,用手指估算下就知道了。我朝有好幾億電腦和手機用戶,每天有無數(shù)個網頁被打開。哪怕在1%的網頁里插一個廣告,都有數(shù)百上千萬次的展示數(shù)量,其中的商機不言而喻。。。

  盡管對此有些無奈,但只要插入的廣告不影響正常上網,也沒什么意見。如果水平夠高,完全可以偽裝成頁面里本來的廣告,至少形式上一樣,看不出任何的破綻。這樣非但不BS,反倒會有些佩服。

  然而,至今見過的各種廣告劫持代碼,簡直一個比一個劣質。這一次見到的,算是垃圾中的戰(zhàn)斗機了。隨便找個網頁編輯器,自動生成的HTML也比這強多了,再隨便找些css稍微修飾下,完全就不會被一眼看出是山寨套牌網頁了。尼瑪?shù)倪@本身就是暗地里的干活,卻沒有任何簡單的加密混淆,還光明正大的明文寫著廣告字樣,這不是赤果果的秀智商下限嗎?

  不過今天既然花時間吐槽這破玩意,就干脆再深入的討論討論未來可能還會出現(xiàn)的變招。

Lv1. 當前最常見的:把被劫持的網頁套在自己的空殼里

  其實這樣做的目的很明確,讓廣告顯示在瀏覽器的最上方。一般為了達到這個效果,會把廣告顯示在頁面的右下角,蓋住被劫持頁面的滾動條,看起來就像是浮動在瀏覽器之外一樣!

  這招夠狠,乍一看,還真以為是QQ之類的軟件彈出的消息框呢。不過只要把瀏覽器窗口退出最大化,順便再拖一下窗口,廣告也跟著動起來了:)假李鬼就瞬間原形畢露了!

防范措施

  這種劫持毫無技術含量可言,反劫持也相當容易。只要在自己網頁里驗證下window.top,是不是在合法的URL列表里。如果不是,那就不允許被內嵌在其他網頁內。更好的辦法就是把top地址提交到后臺服務器上,統(tǒng)計下究竟有哪些網站套了自己的頁面。

Lv2. 在返回網頁里插入外鏈script>

  這種做法相比之前的,要隱蔽的多,至少不會把人家網頁的源文件給替換了。

  當然,如果僅僅是在網頁的最后面插入script>,那還是能被瞬間揭穿,甚至會報毒,因為這太山寨了!有哪個正常的網頁會在/html>后面跟內容呢?只有掛馬的腳本。。。

  不過,要是放對地方,還真不能一眼看出。例如把廣告的script src="">插在head>/head>其中的密密麻麻引用外部js的地方,至少能混上一段時間了。

防范措施

  一般來說,插入的script>大多都是外鏈形式的,這樣廣告變換會比較靈活。對于這種劫持,就要使用類似殺毒軟件掃描可疑模塊的原理。

  廣告不管怎樣插,最終都會以靜態(tài)HTML留在網頁里,這是不容抹去鐵證!

  當我們的網頁HTML加載完畢,觸發(fā)DOMContentLoaded時,我們可以開始掃描一遍DOM內所有的script>標簽。如果發(fā)現(xiàn)有不在信任列表里的src,那么網頁很有可能被注入了可疑的腳本!

  我們可以提交可疑腳本的url到后臺服務器,做進一步認證。如果確實有風險,那么必須彈出警告框提醒用戶。

Lv3. 在返回網頁里插入內置script>

  相比外鏈的腳本,內置的就棘手的多。外鏈的url域名的總是那么幾個,可以簡單的實現(xiàn)過濾。但內置腳本就千變萬化了!隨機變量名,插入廢代碼,各種玄乎。。。不過,魔高一尺,道高一丈~

防范措施

  想最簡單的對付這種劫持,我們必須預先默認個規(guī)定,來識別真假腳本元素。我們給自己的script>元素設置個固定的標簽,例如script myjs="true">。當然具體的標簽名和值是經常變動的,對于劫持程序來說,顯然不知道會有這么個規(guī)矩,仍然傻乎乎的插入script>.../script>。

  于是在之后的"肅反運動"中,可以直接清洗掉了。。。

Lv4. 在返回網頁的script>里混入廣告代碼

  隨著劫持程序不斷升級,招數(shù)會變的越來越狠。說不定某天,劫持程序內置一個html語義分析器,智能的把廣告腳本合并混淆到頁面原先的js里!

  若要真是這樣,那么之前說的給自己的腳本元素加上特征碼也無濟于事了。因為特務已深深的混入到了我們內部,真真假假很難被識別!

  最致命的是,腳本未必都是放在script>/script>,也有可能是element onxxx="">的內聯(lián)形式。。。這下麻煩大了,我得想想怎么解決。。。

防范措施

  對于這種情況,還真找不到一個簡單的方法來識別。唯一能走通的路,就是在發(fā)布HTML時,記錄下文件的Hash值。可以把值寫入網頁,或者存在數(shù)據(jù)庫里。

  當網頁內容加載完成時,我們通過ajax再次讀取當前頁面的內容(一般來說讀的就是當前頁面的緩存數(shù)據(jù))。通過同樣的算法算出頁面的校驗值,和原始值一比對,就知道頁面是否被第三方篡改了。

  我們還可以把篡改過的html發(fā)到后臺,找出字符串差異部分,讓技術人員分析分析到底做了哪些手腳。

  當然,這只限于靜態(tài)網頁。

Lv5. 在返回網頁的外鏈腳本里混入廣告代碼

  這招可算是終極篇 ———— 它完全不修改任何HTML內容!

  然而,一般的網頁多多少少要外鏈幾個js文件吧。于是,那些外鏈的腳本就成了香餑餑的肥肉被盯上了!

  當然也可以像驗證html那樣,事先計算出所有的js文件的hash值,然后再使用ajax重新讀數(shù)據(jù)認證比對。

  不過可別忘了,外鏈js的路徑可以是任意的,而ajax只能讀取同源站點。而且,外鏈的script>也無法讀取其text內容。于是當我們使用站點外的js文件時,劫持程序可以肆無忌憚的從中混入代碼!

防范措施

  由于受到沙箱策略的嚴格控制,我們根本無法獲得外部js內的實際內容,所以:走為上。盡量不使用外部站點的js文件。

  對于自己站點,但不是同個域名的,可以使用Flash的URLLoader跨域加載,只需部署一個crossdomain.xml即可。

Lv6. 把返回網頁的圖片內容替換成廣告圖片

  這樣的流量劫持已經超越人類了,趕緊派一個神做了它吧。。。

防范措施

  理論上,完全可以解決。事實上,也沒問題,只是工作量巨大。。。

  不過外鏈圖片不管同源還是跨域的,都可以由Flash直接讀取,所以可以和html和js一樣,我們使用文件二進制的Hash比對,同樣可以驗證圖片數(shù)據(jù)是否被劫持。

  當然要事先要計算出站點下或外鏈圖片的hash值,客戶端也要分析出當前頁面里用到的圖片,并逐個驗證。這不得不說是個蛋疼的過程。。。

  ============================================

  暫時就YY到這里,以后有新的想法或更好的解決方案,繼續(xù)來這里補充。

  大家有什么巧妙的檢測方法,歡迎留言~

  上面說了一大堆,其本質無法就是在客戶端,把使用到的資源和服務器原始資源二進制校驗,將出現(xiàn)問題的資源反饋給后臺記錄,找出安全隱患。

  雖然這里假象嵌入的僅僅是廣告腳本,然而這種腳本擁有和頁面內其他腳本一樣的權限,因此可以輕而易舉的獲得用戶的cookie。

嵌入的腳本甚至可以通過WebSocket連接到黑客控制臺,發(fā)送你的鼠標和鍵盤的一舉一動,以及頁面上顯示的內容;對方還可以遠程控制,讓js在頁面里悄悄執(zhí)行各種意想不到的操作。。。

標簽:南陽 臺灣 梅州 北海 白城 梧州 三沙 河北

巨人網絡通訊聲明:本文標題《簡單分析網站流量劫持防范措施(圖文)》,本文關鍵詞  簡單,分析,網站,流量,劫持,;如發(fā)現(xiàn)本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《簡單分析網站流量劫持防范措施(圖文)》相關的同類信息!
  • 本頁收集關于簡單分析網站流量劫持防范措施(圖文)的相關信息資訊供網民參考!
  • 企业400电话

    智能AI客服机器人
    15000

    在线订购

    合计11份范本:公司章程+合伙协议+出资协议+合作协议+股权转让协议+增资扩股协议+股权激励+股东会决议+董事会决议

    推薦文章
    海淀区| 乌鲁木齐县| 乌鲁木齐市| 米泉市| 九龙城区| 融水| 治多县| 绥阳县| 安吉县| 东乡族自治县| 河间市| 乾安县| 灌南县| 杂多县| 汝州市| 辽阳市| 焦作市| 绥芬河市| 佛冈县| 盐津县| 山丹县| 垦利县| 靖安县| 仁化县| 义马市| 武隆县| 新河县| 凤山市| 二连浩特市| 瑞昌市| 建昌县| 九台市| 沙河市| 鄂托克旗| 萨嘎县| 雅安市| 东乌珠穆沁旗| 吴桥县| 郎溪县| 尉氏县| 封开县|