一种基于JavaScript的Web前端恶意代码过滤系统及方法技术方案

技术编号:22565400 阅读:18 留言:0更新日期:2019-11-16 12:09
本发明专利技术公开了一种基于JavaScript的Web前端恶意代码过滤系统及方法,所述系统包括:浏览器检测模块、参数配置模块、分析模块和过滤模块;所述浏览器检测模块,用于检测不同的浏览器版本,根据检测情况调用相应的DOM接口;所述参数配置模块,用于设置过滤启动前的过滤强度参数;所述分析模块,用于分析输入代码是否为需要过滤的恶意代码;所述过滤模块,用于对恶意代码进行节点迭代、创建的文档进行遍历和过滤,然后返回过滤后的String或DOM。本发明专利技术的系统和方法解决了传统方法后台过滤存在的不能完全匹配、纯文本过滤等方面的缺陷,具有更高的安全性和高效性。

A javascript based web front-end malicious code filtering system and method

The invention discloses a web front-end malicious code filtering system and method based on JavaScript, the system includes: browser detection module, parameter configuration module, analysis module and filtering module; the browser detection module is used to detect different browser versions, call corresponding DOM interface according to the detection situation; the parameter configuration module is used to set filtering start The former filter strength parameter; the analysis module, which is used to analyze whether the input code is malicious code to be filtered; the filter module, which is used to iterate the nodes of malicious code, traverse and filter the created documents, and then return the filtered string or dom. The system and method of the invention solve the defects of the background filtering of the traditional method, such as the incompleteness of matching, the pure text filtering, etc., and have higher security and efficiency.

【技术实现步骤摘要】
一种基于JavaScript的Web前端恶意代码过滤系统及方法
本专利技术涉及Web前端安全领域,特别涉及一种基于JavaScript的Web前端恶意代码过滤系统及方法。
技术介绍
当前,互联网大量涌现如网页挂马、邮件攻击、XSS跨站等攻击方式。通常,攻击者都是利用漏洞进行攻击。为保障网络安全,必须检测应用漏洞,并对利用漏洞的恶意代码进行检测和过滤。因此,发现与挖掘其中潜在的安全隐患和漏洞,检测和阻断恶意代码,一直是信息安全领域的研究热点。利用XSS漏洞实现攻击web程序用户的方法有很多。XSS攻击由客户端发起,尽管执行时受到很多限制,却能造成严重的后果。早期的XSS攻击都是盘算如何盗取客户端cookie,然后劫持客户端和web服务端的会话,还有其他利用XSS进行网络钓鱼的攻击方法。这类攻击都是针对客户端进行攻击。近年流行的XSSWORM攻击方式,是通过AJAX技术把恶意的XSS数据感染到每一个用户,可以对web服务造成很大影响,间接实现对web服务端的攻击。Web2.0网站开始大量使用AJAX技术,浏览页面几乎是不刷新的。因此,利用XSS漏洞劫持浏览器的攻击方式,将带来较大的危害。防范XSS攻击要解决两点,一是客户端要能区分web页面中的可信内容(Web开发者约定的内容)与不可信内容(包含恶意脚本的内容);二是客户端要分析DOM动态更新后的HTML文本。传统的过滤大多数依靠后台进行纯文本过滤,但后台过滤存在不能完全匹配浏览器特性的缺陷,如svg/onload适用于谷歌浏览器,但不适用于IE浏览器。同时,纯文本过滤存在缺陷:运用黑名单过滤时,属性、标签都可能没有考虑全面,如<svg>、<object>、<input>等。对伪协议考虑不全面,如<ahref=javascript:alert(1)>。有些只是简单过滤script这种关键词,但用字符编码就能绕过,或过滤关键词时过于简单,如直接将script过滤,则使用scrscriptipt就能绕过。
技术实现思路
本专利技术的目的在于克服已有技术中后台过滤存在的不能完全匹配、纯文本过滤等方面的缺陷,从而提供一种基于JavaScript的Web前端恶意代码过滤系统及方法,具有更高的安全性和高效性。为了实现上述目的,本专利技术提供了一种基于JavaScript的Web前端恶意代码过滤系统,所述系统包括:浏览器检测模块、参数配置模块、分析模块和过滤模块;所述浏览器检测模块,用于检测不同的浏览器版本,根据检测情况调用相应的DOM接口;所述参数配置模块,用于设置过滤启动前的过滤强度参数;所述分析模块,用于分析输入代码是否为需要过滤的恶意代码;所述过滤模块,用于对恶意代码进行节点迭代、创建的文档进行遍历和过滤,然后返回过滤后的String或DOM。作为上述系统的一种改进,所述浏览器检测模块还用于检测浏览器是否支持对象documentimplementation中的CreateHTMLDocument。作为上述系统的一种改进,为防止攻击者对documentimplementation破坏,所述参数配置模块将代码中默认的DOM攻击保护设置为true,并设置标签与属性的黑名单和白名单。作为上述系统的一种改进,所述分析模块执行的步骤包括:步骤4-1)判断DOM返回值是否为DomcumengtFragment,判断结果是肯定的则进入步骤4-3),否则转入步骤4-2);步骤4-2)直接将body赋值给返回节点并结束;步骤4-3)对body的根文档ownerDocument创建文档碎片;步骤4-4)对返回节点进行赋值;步骤4-5)判断body是否存在子节点,存在则进入步骤4-6),否则直接结束;步骤4-6)将body存在的子节点作为参数传入函数appendChild()生成新节点;步骤4-7)将生成的新节点返回到节点上,返回步骤4-4)。作为上述系统的一种改进,所述过滤模块执行的步骤包括:步骤5-1)在文件的rootownerDocument或root节点处调用CreateNodeIterator方法,对节点进行迭代;步骤5-2)针对当前节点的element属性、attribute属性和shadomDOM历遍并过滤文档;步骤5-3)返回过滤后的string或DOM。本专利技术还提供了一种基于JavaScript的Web前端恶意代码过滤方法,所述方法包括:步骤1)检测浏览器是否支持documentImplementation中的CreateHTMLDocument,若支持执行步骤3),否则执行步骤2);步骤2)用浏览器的ToStaticHTML对输入代码进行代码过滤,然后直接输出,过滤结束;步骤3)依次将输入代码进行参数解析;步骤4)判断输入代码是否为需要过滤的恶意代码,如果是则进入步骤5),否则转入步骤6);步骤5)依次进行节点迭代、历遍和过滤所创建的文档,返回过滤后的string或DOM;步骤6)直接返回输入的代码。作为上述方法的一种改进,所述步骤1)具体包括:步骤1-1)新建一个名为Doc的HTML文档,Doc的类型设置为“text/html”;步骤1-2)添加一个新的文档类型,在Doc的nodedocument中用“HTML”作为其name;步骤1-3)添加一个新的html元素到HTMLnamespace中;步骤1-4)向html元素追加一个新的head元素到HTMLnamespace中;步骤1-5)如果传入了title参数,向html元素追加一个新的body元素到HTMLnamespace中;步骤1-8)返回HTML文档Doc。作为上述方法的一种改进,所述步骤4)的判断输入代码是否为需要过滤的恶意代码的步骤,具体包括:步骤4-1)判断DOM返回值是否为DomcumengtFragment,判断结果是肯定的则进入步骤4-3),否则转入步骤4-2);步骤4-2)直接将body赋值给返回节点并结束。步骤4-3)对body的根文档ownerDocument创建文档碎片;步骤4-4)对返回节点进行赋值;步骤4-5)判断body是否存在子节点,存在则进入步骤4-6),否则直接结束;步骤4-6)将body存在的子节点作为参数传入函数appendChild()生成新节点;步骤4-7)将生成的新节点返回到节点上,返回步骤4-4)。作为上述方法的一种改进,所述步骤5)具体包括:步骤5-1)在文件的rootownerDocument或root节点处调用CreateNodeIterator方法,对节点进行迭代;步骤5-2)针对当前节点的element属性、attribute属性和shadomDOM历遍并过滤文档;步骤5-3本文档来自技高网
...

【技术保护点】
1.一种基于JavaScript的Web前端恶意代码过滤系统,其特征在于,所述系统包括:浏览器检测模块、参数配置模块、分析模块和过滤模块;/n所述浏览器检测模块,用于检测不同的浏览器版本,根据检测情况调用相应的DOM接口;/n所述参数配置模块,用于设置过滤启动前的过滤强度参数;/n所述分析模块,用于分析输入代码是否为需要过滤的恶意代码;/n所述过滤模块,用于对恶意代码进行节点迭代、创建的文档进行遍历和过滤,然后返回过滤后的String或DOM。/n

【技术特征摘要】
1.一种基于JavaScript的Web前端恶意代码过滤系统,其特征在于,所述系统包括:浏览器检测模块、参数配置模块、分析模块和过滤模块;
所述浏览器检测模块,用于检测不同的浏览器版本,根据检测情况调用相应的DOM接口;
所述参数配置模块,用于设置过滤启动前的过滤强度参数;
所述分析模块,用于分析输入代码是否为需要过滤的恶意代码;
所述过滤模块,用于对恶意代码进行节点迭代、创建的文档进行遍历和过滤,然后返回过滤后的String或DOM。


2.根据权利要求1所述的基于JavaScript的Web前端恶意代码过滤系统,其特征在于,所述浏览器检测模块还用于检测浏览器是否支持对象documentimplementation中的CreateHTMLDocument。


3.根据权利要求1所述的基于JavaScript的Web前端恶意代码过滤系统,其特征在于,为防止攻击者对documentimplementation破坏,所述参数配置模块将代码中默认的DOM攻击保护设置为true,并设置标签与属性的黑名单和白名单。


4.根据权利要求1所述的基于JavaScript的Web前端恶意代码过滤系统,其特征在于,所述分析模块执行的步骤包括:
步骤4-1)判断DOM返回值是否为DomcumengtFragment,判断结果是肯定的则进入步骤4-3),否则转入步骤4-2);
步骤4-2)直接将body赋值给返回节点并结束;
步骤4-3)对body的根文档ownerDocument创建文档碎片;
步骤4-4)对返回节点进行赋值;
步骤4-5)判断body是否存在子节点,存在则进入步骤4-6),否则直接结束;
步骤4-6)将body存在的子节点作为参数传入函数appendChild()生成新节点;
步骤4-7)将生成的新节点返回到节点上,返回步骤4-4)。


5.根据权利要求1所述的基于JavaScript的Web前端恶意代码过滤系统,其特征在于,所述过滤模块执行的步骤包括:
步骤5-1)在文件的rootownerDocument或root节点处调用CreateNodeIterator方法,对节点进行迭代;
步骤5-2)针对当前节点的element属性、attribute属性和shadomDOM历遍并过滤文档;
步骤5-3)返回过滤后的string或DOM。


6.一种基于JavaScript的Web前端恶意代码过滤方法,所述方法包括:
步骤1)检测浏览器是否支持documentImplementa...

【专利技术属性】
技术研发人员:党寿江刘鹏刘学
申请(专利权)人:中国科学院声学研究所
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术
  • 暂无相关专利