【劫持】網頁被注入廣告


閱讀目錄

  • 問題描述
  • 問題分析
  • 問題解決
  • 為什么

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

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

 

問題描述

image

某一天下午開始,我們制作的網站就開始被各種廣告注入,類似上圖這種。

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

發現問題的有:1、手機端網頁最為普遍,全部都是底部有廣告。(app內嵌H5網頁廣告最多)

2、網頁端網頁極少出現,出現的均為運營商的廣告。

3、無論有無登錄,即使在需要登錄才能被訪問到的頁面也有廣告。

4、廣告時有時無,刷新一遍頁面之后基本不出現半個小時左右。

5、廣告釣魚鏈接很多。

 

問題分析

首先分析廣告來源:

經過各方面的查找,確定了以下一些可能出現問題的來源。

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

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

3、iframe注入,頁面被攔截之后加入了iframe標簽,或者利用js注入后加載了廣告的iframe標簽。

4、服務器被黑。

 

對於廣告本身來說,由於廣告出現的時間隨機,出現的頁面隨機,出現的廣告隨機,等特點,捕捉問題難度提高了。

因為對於廣告本身來說,你不知道你使用的解決方法是否能馬上起到效果。所以也增加了解決的難度。

然后分析一下實際出現的代碼。

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

得到了以下的代碼

image

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

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

1、頁面底部出現了iframe標簽,本不該存在的。

2、頁面被加載了廣告的js,本來肯定沒有。

3、重復加載了一次我的js並且命名遭到修改simpleTip_wap.js(1)可以看出。

其他中招的頁面也是同樣的道理,這里就不貼了。

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

image

從加載的過程很明顯可以看出,是js注入,通過偽造了一個js然后我加載了別人的,別人再加載了我的,別人再加載廣告。導致頁面本身不會出現問題,不影響正常使用,但是就是會出現廣告了。

 

問題解決

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

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

對於網站安全來說,之前了解的都是有關業務的,這次第一次是這種無賴的頁面。

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

1、meta禁用iframe

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

據說可以禁用iframe於是拿來試試。

 

2、js禁用iframe

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

在頁面中使用類似如下的js,有很多的版本,我就列舉其中一個。

 

3、css讓iframe顯示為空白

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

畢竟不是前端,所以css懂得不多,也就拷貝過來試一試。

 

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

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

也是為了禁用iframe

 

5、自己手寫js定時器循環檢測頁面iframe標簽,並置空

失敗了!你別嘗試了!

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

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

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

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

有效,但是廣告會有一閃而過,如果把定時時間調快對於頁面來說壓力賊大

 

7、調整js名字

因為發廣告的人重命名了我的js名字,我認為可能是因為自己的js名字被捕捉到了。

於是重命名了js的名字。

 

8、調整js位置

因為我的js寫在了頁面底部為了頁面加載的速度,而廣告在底部,我就想會不會是。

所以我將js調整到了head標簽中。

 

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

9、更換了dns解析服務器

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

 

10、很多人看到這里肯定已經看不下去了,老哥說了這么多,但是你沒說結果啊!上面的方法到底行不行啊!

然后我要崩潰的告訴你,以上方法均不奏效,或者說效果不好。廣告依舊猖狂。

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

 

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

然后我解釋一下,為什么我要羅列一下上面的解決方案,一個是讓別人不要走彎路了,一個是因為或許這個方法對我這個廣告沒用,但是對於別人是有用的。我只能過廣告那么多種類,我也真的不確定。

 

為什么

那么為什么上面9種方法不行呢?我試着亂分析一下。

1、iframe標簽法,我嘗試直接把iframe標簽刪除之后發現廣告依舊存在,也就是說廣告並非都在iframe里面。

2、css方法,js方法。廣告的js加載都是在我自己的js、css加載完成之后再運行他的,所以我們沒有辦法捕獲到他生成的iframe或者生成的js

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

為什么https行了呢?

加密之后網頁沒有辦法被篡改了。。。

有什么弊端嗎?

好的證書要錢。

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

 

轉自:https://www.cnblogs.com/linkstar/p/6856646.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM