一行代碼解決網站防掛IFRAME木馬方案,小鴿子序列(靈兒)
2020-10-28 20:13:58
供稿:網友
最近公司和好朋友的網站紛紛被IFRAME了,有的掛上了鴿子,有的瘋狂地彈窗,有的給人家增加流量。一個個文件去查找替換那些IFRAME代碼,剛松口氣,不久又加上去了,哎,什么世道!于是他們向我這個"JS高手"(他們強加給我的)求救,我也不能等閑視之,只好擊鍵殺殺殺了。
因為FF(Firefox)不怕IFRAME,于是就拿IE開刀,不知道比爾有沒有獎發。我只寫了一句代碼,就搞定了,哈,痛快。就是IE only(特有的)的CSS中的屬性expression,插進去試試,果然那些IFRAME不起作用了。
代碼如下:
<style type="text/css" media="all" id="http://nihaoku.cn">
/*<![CDATA[*/
iframe{
v:expression(this.src='about:blank',this.outerHTML='');/*使用IE Only 的樣式會除所有 IFRAME */
}
#f126{v:expression() !important} //如果要使自己的IFRAME可以執行,在自己的IFRAME里加上ID="f126";
/*]]>*/
</style>
分析:
前綴:expression(表達式);
這個前綴是可以隨意更換的,我上面取名為"v",例如我可以換成:abc123:expression(this.src='about:blank',this.outerHTML=''); 掛木馬的家伙得先看你的CSS里這個前綴,然后掛馬的時候寫成這樣<iframe style="abc123:expression() !important" src="URL"></iframe>,那個前綴一定要是和你的網站一樣的(abc123),才能掛到馬,哈哈哈!如果把前綴做成動態的,就非常OK了,看你怎么掛!
優點:
可以解決一些站長的煩惱,無須去理會人家插了多少IFRAME木馬,那些IFRAME都不起作用;
保護了訪客的安全,這些IFRAME不執行,不下載,就不會破壞到訪問的電腦;
代碼簡單,僅一句CSS樣式,不管你是ASP,ASP.NET,JSP,PHP還是RUBY,都通用;
缺點:
只適合防御目前的掛IFRAME方案;
使得人家掛馬的方式要改變了,掛馬者可以構造這樣的代碼<iframe style="v:expression() !important" src="URL"></iframe>使我的防御方式失效,不過掛馬都一定得看我的CSS里expression前面的這個"v"字母,我可以換成任意的如:xgz:expression(...),哈哈哈,他也拿我沒辦法,再如,如果我這個前綴是變化的,是不是也行吖 *_*
不能防御其他標記的馬,如<script>、<applet>、<object>等。
到那時候再來找我吧,呵呵~ 網頁里插入的IFRAME還是存在,只是不起作用了;
代碼拿出來分享一下吧!詳細請進:http://www.nihaoku.cn/temp/noiframe.html
不過我這個方法不是最終的解決案,最終的解決方案是找出真正被掛IFRAME的原因,堵住源頭。這可不是我的事,呵~