【劫持】網頁被注入廣告

閱讀目錄javascript

  • 問題描述
  • 問題分析
  • 問題解決
  • 爲何

你的網站是否在尾部出現了讓人惱火的廣告?css

此次我算是遇到了這些流氓的廣告。那麼就讓咱們一步步攻克這些惱火的廣告吧。html

 

問題描述

image

某一天下午開始,咱們製做的網站就開始被各類廣告注入,相似上圖這種。前端

image還有在網頁右下角出現的廣告java

發現問題的有:一、手機端網頁最爲廣泛,所有都是底部有廣告。(app內嵌H5網頁廣告最多)jquery

二、網頁端網頁極少出現,出現的均爲運營商的廣告。chrome

三、不管有無登陸,即便在須要登陸才能被訪問到的頁面也有廣告。express

四、廣告時有時無,刷新一遍頁面以後基本不出現半個小時左右。centos

五、廣告釣魚連接不少。瀏覽器

 

問題分析

首先分析廣告來源:

通過各方面的查找,肯定了如下一些可能出現問題的來源。

一、DNS劫持,域名解析方面出現問題。

二、js注入,頁面未對特殊字符限制。

三、iframe注入,頁面被攔截以後加入了iframe標籤,或者利用js注入後加載了廣告的iframe標籤。

四、服務器被黑。

 

對於廣告自己來講,因爲廣告出現的時間隨機,出現的頁面隨機,出現的廣告隨機,等特色,捕捉問題難度提升了。

由於對於廣告自己來講,你不知道你使用的解決方法是否能立刻起到效果。因此也增長了解決的難度。

而後分析一下實際出現的代碼。

我把出現問題的頁面保存了下來進行分析。

獲得瞭如下的代碼

image

我除去了我原本頁面的代碼。剩下的就是js加載的代碼。

很明顯,出現了兩個問題。

一、頁面底部出現了iframe標籤,本不應存在的。

二、頁面被加載了廣告的js,原本確定沒有。

三、重複加載了一次個人js而且命名遭到修改simpleTip_wap.js(1)能夠看出。

其餘中招的頁面也是一樣的道理,這裏就不貼了。

下面用chrome查看頁面加載狀況。

image

從加載的過程很明顯能夠看出,是js注入,經過僞造了一個js而後我加載了別人的,別人再加載了個人,別人再加載廣告。致使頁面自己不會出現問題,不影響正常使用,可是就是會出現廣告了。

 

問題解決

做爲毫無網站安全經驗的小白。第一件作的事情確定是查閱各類資料,尋找解決的方案。

先說明一下環境,由於本人是java開發,使用的是jsp頁面。而後服務器使用的是centos7。容器tomcat。頁面只有jquery和一個簡單的提示js。簡單的css。

對於網站安全來講,以前瞭解的都是有關業務的,此次第一次是這種無賴的頁面。

下面列舉我尋找到的各類解決方案,我都一個個作了嘗試。請看到最後再開始寫代碼

一、meta禁用iframe

使用<meta http-equiv="X-Frame-Options" content="DENY">

聽說能夠禁用iframe因而拿來試試。

 

二、js禁用iframe

<script type="text/javascript"> 
        if(top.location!=self.location)top.location=self.location;      
    </script>

在頁面中使用相似以下的js,有不少的版本,我就列舉其中一個。

 

三、css讓iframe顯示爲空白

<style type="text/css"> 
iframe{v:expression(this.src='about:blank',this.outerHTML='');} 
</style>

畢竟不是前端,因此css懂得很少,也就拷貝過來試一試。

 

四、在jsp頁面頭部加入協議

response.setHeader("X-Frame-Options", "SAMEORIGIN");

也是爲了禁用iframe

 

五、本身手寫js定時器循環檢測頁面iframe標籤,並置空

失敗了!你別嘗試了!

-----------------------------------------------------上面是從iframe標籤入手,下面是從js方向入手

六、使用js定時程序不停的清楚頁面尾部標籤

</body> 
<div id="bottom"></div>

<script type="text/javascript"> 
    setInterval(clearAd,1000); 
    function clearAd() 
    { 
        $("#bottom").nextAll().remove(); 
    } 
    </script>

有效,可是廣告會有一閃而過,若是把定時時間調快對於頁面來講壓力賊大

 

七、調整js名字

由於發廣告的人重命名了個人js名字,我認爲多是由於本身的js名字被捕捉到了。

因而重命名了js的名字。

 

八、調整js位置

由於個人js寫在了頁面底部爲了頁面加載的速度,而廣告在底部,我就想會不會是。

因此我將js調整到了head標籤中。

 

-------------------------------------下面是從服務器和dns角度考慮的

九、更換了dns解析服務器

由於我發現這個頁面放到別的服務器並不出現廣告,或許是dns的問題,換成了官方的域名解析服務器。

 

十、不少人看到這裏確定已經看不下去了,老哥說了這麼多,可是你沒說結果啊!上面的方法到底行不行啊!

而後我要崩潰的告訴你,以上方法均不奏效,或者說效果很差。廣告依舊猖狂。

最後我祭出了個人殺招,也就是最終的解決方案10,HTTPS大法

 

自從網站加上了https以後再也就沒有出現過廣告了。

而後我解釋一下,爲何我要羅列一下上面的解決方案,一個是讓別人不要走彎路了,一個是由於或許這個方法對我這個廣告沒用,可是對於別人是有用的。我只能過廣告那麼多種類,我也真的不肯定。

 

爲何

那麼爲何上面9種方法不行呢?我試着亂分析一下。

一、iframe標籤法,我嘗試直接把iframe標籤刪除以後發現廣告依舊存在,也就是說廣告並不是都在iframe裏面。

二、css方法,js方法。廣告的js加載都是在我本身的js、css加載完成以後再運行他的,因此咱們沒有辦法捕獲到他生成的iframe或者生成的js

三、dns方法,相同的域名解析服務器,一個有廣告,一個沒有,問題應該不出如今dns上面。

爲何https行了呢?

加密以後網頁沒有辦法被篡改了。。。

有什麼弊端嗎?

好的證書要錢。

很差的證書要命(瀏覽器不信任)

 

轉自:http://www.javashuo.com/article/p-htxytwhu-ct.html

相關文章
相關標籤/搜索