1. 程式人生 > >解決網站防掛IFRAME木馬方案

解決網站防掛IFRAME木馬方案

因為FF(Firefox)不怕IFRAME,於是就拿IE開刀,不知道比爾有沒有獎發。我只寫了一句程式碼,就搞定了,哈,痛快。就是IE only(特有的)的CSS中的屬性e­xpression,插進去試試,果然那些IFRAME不起作用了。

程式碼如下:

<style type="text/css" media="all" id="http://safe3.cn"> /*<![CDATA[*/ iframe{ v:e­xpression(this.src='about:blank',this.outerHTML='');/*使用IE Only 的樣式會除所有 IFRAME */ } #f126{v:e­xpression() !important} //如果要使自己的IFRAME可以執行,在自己的IFRAME里加上ID="f126"; /*]]>*/ </style>

分析: 字首:e­xpression(表示式);

  這個字首是可以隨意更換的,我上面取名為"v",例如我可以換成:abc123:e­xpression(this.src='about: blank',this.outerHTML=''); 掛木馬的傢伙得先看你的CSS裡這個字首,然後掛馬的時候寫成這樣<iframe style="abc123:e­xpression() !important" src="URL"></iframe>,那個字首一定要是和你的網站一樣的(abc123),才能掛到馬,哈哈哈!如果把字首做成動態的,就非常OK了,看你怎麼掛!

優點:

可以解決一些站長的煩惱,無須去理會人家插了多少IFRAME木馬,那些IFRAME都不起作用;

保護了訪客的安全,這些IFRAME不執行,不下載,就不會破壞到訪問的電腦;

程式碼簡單,僅一句CSS樣式,不管你是ASP,ASP.NET,JSP,PHP還是RUBY,都通用;

缺點:

只適合防禦目前的掛IFRAME方案;

使得人家掛馬的方式要改變了,掛馬者可以構造這樣的程式碼<iframe style="v:e­xpression() !important" src="URL"></iframe>使我的防禦方式失效,不過掛馬都一定得看我的CSS裡e­xpression前面的這個"v" 字母,我可以換成任意的如:xgz:e­xpression(...),哈哈哈,他也拿我沒辦法,再如,如果我這個字首是變化的,是不是也行吖 *_*

不能防禦其他標記的馬,如<script>、<applet>、<object>等。 到那時候再來找我吧,呵呵~ 網頁裡插入的IFRAME還是存在,只是不起作用了;

再加固防線,加入以下JS程式碼——其實這個程式碼可以完全不用:

<script type="text/javascript" language="javascript"> //<![CDATA[ function killfrm() { var xgzfrm=document.getElementsByTagName("iframe"); for(var i=0;i<xgzfrm.length;i++)//迴圈檢查所有IFRAME標記,把所有IFRAME的URL都改為空白頁,然後刪除IFRMAE標記; { xgzfrm[i].src='about:blank'; xgzfrm[i].outerHTML=''; } } window.onload=killfrm;//一邊載入頁面,一邊執行這個JS方法; //]]> </script>

另外轉一種解決方案——這種方案不知道管不管用,沒試過,方法如下:

在網頁最後加入<xmp>,再用css控制它的顯示方式,如:xmp { width:1px; overflow:hidden; text-overflow:clip; white-space: nowrap; clear: none; float: none; line-height: 0px; display: inline; }