消除超文本标记语言中有害代码的方法

文档序号:6562862阅读:161来源:国知局

专利名称::消除超文本标记语言中有害代码的方法
技术领域
:本发明涉及计算机网络技术,特别涉及一种消除超文本标记语言(HyperTextMarkedlanguage,HTML)中有害代码的方法。
背景技术
:超文本标记语言是一种用来制作超文本文档的简单标记语言。超文本传输协议(HyperTextTransportationProtocol,HTTP)规定了运行HTML文档时所遵循的规则和进行的操作。用HTML编辑的超文本文档为HTML文档,它能应用于各种才喿作系统平台。自1990年以来HTML就一直被用作WWW(WorldWideWeb,万维网,也可筒写为Web)的信息表示语言。HTML的普遍应用带来了超文本的效果,即用户可以通过点击链接转入相关的主题,发送电子邮件,填写表单并联机提交,以及访问数据库和信息资源。其中,无论Web页面包括动画、多々某体、图形还是其它复杂格式的内容,其基础都是HTML。图1示出了典型的包含用户所在的客户端、服务器和数据库的网络结构。用户使用客户端,通过网络服务器提供的Web页面输入带有HTML代码的内容,服务器将该内容存入数据库,当用户请求显示之前输入的内容时,数据库将该内容通过服务器发送给用户所在的客户端。用户使用客户端从网络服务器提供的Web页面获取信息时,Web页面上可以提供输入框,让用户输入带有HTML内容的信息,之后,网络服务器进行信息处理并与用户之间进行信息交互。用户在输入带有HTML内容的信息时,实际上输入的是包括带有HTML内容的代码。但是,用户输入的可能是一些错误的HTML代码,或者输入的是一些特殊的符号,例如"<",">","'"之类的特殊符号,这些特殊符号对应特殊的HTML代码,再或者是用户输入信息时,机器产生冗余而形成错误的HTML代码。这些情况下,如果网络服务器在进行信息处理和与用户之间交互的过程中不对这些特殊或错误的HTML代码做一定处理的话,很可能在显示这些HTML代码时导致Web页面布局等出现不能正常显示的问题,会P争低服务器的性能,因此这些特殊或错误的HTML代码是有害的。另外,有很多木马攻击的方式都是通过输入有害的HTML代码或者Javascript代码来利用系统漏洞对网络实施攻击,影响了服务器的安全性。为了避免以上的问题,现有技术中有一种消除HTML语言中有害代码的方法是这样处理的使用一种称为ubbcode的简化HTML格式,其比HTML具有更安全的网页代码。该方法通过禁止用户输入HTML代码,而是只允许用户输入指定的ubb代码来代替HTML代码,然后在服务器端将ubb转换为HTML后再执行后续的操作,以保障服务器性能的同时提高系统的安全性。但是,该方法要求用户熟悉ubb,而普通用户只想通过简单的复制粘贴等操作提交HTML内容,因此,对不熟悉ubb的用户来说,该方法难以实现。另外,即使是熟悉ubb的用户,在使用时也需要手动或者通过工具把要输入的HTML代码转换为指定的ubb代码,这样,影响了用户使用时的感受。
发明内容本发明的目的是提供一种消除超文本标记语言中有害代码的方法,以克服显示HTML代码时导致的Web页面布局等不正常显示的问题及服务器安全性受破坏的问题,还克服了现有技术中难以实现不熟悉ubb的用户输入过程中消除有害HTML代码的缺点和影响用户感受的缺点。为解决上述」汰术问题,本发明提供一种消除超文本标记语言中有害代码的方法是这样实现的一种消除超文本标记语言HTML中有害代码的方法,包括步骤遍历解析输入的HTML代码过程中补齐不完整的HTML标签;根据预定义的规则对HTML代码进行过滤;遍历解析经补齐和过滤的HTML代码过程中对HTML代码根据需求按照预置的对应操作进行修正;根据预置的代码表将HTML代码中浏览器非标准代码转换为标准代码。所述根据预定义的规则进行过滤由以下方式实现预定义保留规则保留标签库中存储允许接收的HTML标签,对符合保留标签库的标签做保留处理;预定义去除规则去除标签库中存储不允许接收的HTML标签,对符合去除标签库的标签做去除处理;预定义默认规则对不在保留标签库和去除标签库中的标签仅去除其HTML标签,保留该标签下的内容;根据预定义的保留规则、去除规则和默认规则对解析结果进行过滤。预定义规则进一步包括增加和/或减少和/或改变所述保留标签库和/或去除标签库中的标签。所述修正步骤由以下方式实现根据检验父子关系正确性的需求,根据对应的删除操作,删除父子关系不正确的节点;和/或根据检验超链接正确性的需求,利用正则表达式对不正确的超链接按照对应的操作进行删除,或以普通文本进行处理;和/或根据限制输入的HTML代码内容的需求,根据预置的恶意代码库和/或根据预置的限制词汇库,利用正则表达式删除或替换该恶意代码和/或词汇。所述转换步骤由以下方式实现根据预置的转换代码表,将HTML的文本中特殊代码和/或语法关键字转换为标准代码。所述补齐和过滤步骤在两次遍历解析过程中分别完成。所述修正和转换步骤在两次遍历解析过程中分别完成。所述遍历解析采用SAX解析或HTMLDOM解析。一种提交和回显包含HTML内容的方法,由以下步骤实现A.用户通过终端输入包含HTML代码的内容并提交到服务器;B.服务器将用户提交的包含HTML代码存入数据库;C.用户请求显示所述输入的包含HTML代码的内容;D.数据库发送用户请求的包含HTML代码的内容到服务器;E.服务器对收到包含HTML代码的内容进行以下处理遍历解析输入的HTML代码过程中补齐不完整的HTML标签;根据预定义的规则对HTML代码进行过滤;遍历解析经补齐和过滤的HTML代码过程中对HTML代码根据需求按照预置的对应操作进行修正;根据预置的代码表将HTML代码中浏览器非标准代码转换为标准代码;F.将经过处理的包含HTML代码的内容发送到客户端并显示。一种提交和回显包含HTML内容的方法,由以下步骤实现A.用户通过终端输入包含HTML代码的内容,并才是交到服务器;B.服务器对收到包含HTML代码的内容进行以下处理遍历解析输入的HTML代码过程中补齐不完整的HTML标签;根据预定义的规则对HTML代码进行过滤;遍历解析经补齐和过滤的HTML代码过程中对HTML代码根据需求按照预置的对应操作进行修正;根据预置的代码表将HTML代码中浏览器非标准代码转换为标准代码;C.将经过处理的包含HTML代码的内容发送到数据库;D.用户请求显示之前输入的包含HTML代码的内容;E.数据库发送用户请求的包含HTML代码的内容经由到服务器到客户端。由以上本发明提供的技术方案可见,本发明在包含HTML代码的内容经过服务器的过程中,由服务器通过对这些代码进行补齐、过滤、修正和转换处理,消除了超文本标记语言中的有害代码,使网页能够正常显示,从而保障了服务器的性能,同时提高了服务器的安全性,并在该过程中不影响用户的感受。图l为包含用户客户端、服务器和数据库的网络结构图2为本发明消除HTML中有害代码方法的一个实施例的流程图3为本发明提交和回显包含HTML内容方法的一个实施例的流程图4为本发明提交和回显包含HTML内容方法的另一实施例的流程图。具体实施例方式本发明的核心是包含HTML代码的内容经过服务器的过程中,由服务器通过对这些代码进行补齐、过滤、修正和转换步骤来消除其中的有害代码。具体实施时,可以是用户输入的包含HTML代码的内容经过服务器发送到数据库的过程中,这些代码由服务器进行补齐、过滤、修正和转换这些操作后再存入数据库,或者是在数据库将存储的HTML代码经过服务器显示给客户端过程中,由服务器对这些代码进行补齐、过滤、修正和转换这些操作。为了使本
技术领域
的人员更好地理解本发明方案,下面结合附图和实施方式对本发明作进一步的详细说明。本领域人员知道,HTML属于文档对象才莫型(DocumentObjectModule,DOM),DOM是万維网联盟(W3C)定义的一种标准文档对象模型,该模型以树形结构表示了HTML文档。HTML中的标签或标签的内容是节点,各个节点被视为DOM文档对象模型中的各种类型的Node对象,DOM详细定义了各个节点的类型。现有技术中可以用SAX对DOM进行遍历解析。SAX是解析DOM文档对象模型的一种事件驱动方式,具体为SAX解析器装载DOM文档后,在对DOM文档中的节点进行解析处理时,产生一系列的事件,根据被触发的事件,对DOM文档中的节点做出处理。除利用SAX夕卜,也可以利用其它方法对HTML代码进行遍历解析,例如HTMLDOM,该遍历解析方法与利用SAX的方法类似。那么,本发明在遍历解析输入的包含HTML代码的内容的过程中,需要经过补齐、过滤、修正和转换操作。以下以一个实施例来说明本发明。图2示出了本发明一个实施例的流程。步骤201:对不完整的HTML标签进行补齐。由于HTML的标签是成对的,包含不成对标签的HTML代码是错误的HTML代码,该步骤即是将不成对的标签进行补齐。可以利用栈来记录标签,这是本领域技术人员常用的方法。具体的,利用栈的先进先出的特点,当读到一个开始标签时,推送该标签到栈中,当读到一个结束标签时,弹出栈中的该标签,这样可以^r-睑标签是否成对出现,并可以在才全测到标签不成对时补齐缺失的标签。步骤202:根据预先定义的规则对HTML代码进行过滤。该步骤是对输入的HTML代码中的标签进行逐个扫描,对扫描到的结果根据预先定义的规则进行过滤。其中,过滤处理具体可以为保留和去除。规则的定义包含以下几种方式A.定义可以4妄收的HTML标签的为保留标签库,对保留标签库中的HTML标签的处理规则为保留。该规则检测扫描到的HTML标签是否为保留标签库中的标签,如果是,则按照该规则对该HTML代码进行保留处理后,即留下该HTML标签和内容。B.定义需要去除的HTML标签为去除标签库,对去除标签库中的HTML标签的处理规则为保留。该规则检测扫描到的HTML标签是否为去除标签库中的比较,如果是,则按照该规则去除该HTML标签下的子标签和该标签下的内容。该步骤中,可以定义的HTML标签包括错误标签,还包括恶意代码标签。例如可以包括所有已知的恶意Javascript代码,这样按照该步骤的规则可以将这类的恶意代码去除,从而提高了服务器的安全性。另外,还可以对不在上述两种标签库中的HTML标签做默认处理,例如该默认处理为只去除该HTML标签,而保留该标签下的内容。以上标签库中的标签可以预先定义,并且可以一艮据情况改变标签库中的标签。通过该步骤,保证保留了允许的HTML标签,并去除了可能有害的HTML标签,还对不在保留标签库和去除标签库中的HTML标签进行去除标签处理,只保留其内容,从而不影响页面正常显示。这样,只留下了真正需要处理的内容,为下面的步骤减轻了处理负担。以上步骤201和202可以在一次遍历解析中完成。具体的,可以在一次SAX解析的过程中完成,并可以在利用SAX解析HTML时,对步骤201和202的操作混合执行,即不分先后,只需满足任一步骤的条件即可执行。例如HTML代码格式为〈trxtd〉文本々tr〉,本领域技术人员知道,HTML的标签是成对的,因此该HTML代码中缺少对应的々td、执行步骤201,补齐该标签,补齐后的结果为〈trxt&文本々tdx/tr、对于步骤202,例如HTML代码为<tablewidth="100。/。"xtrxtd〉文本〈/tdx/trx/table〉(*)该段代码中包含table标签,tr标签。td标签和文本。利用SAX对该段代码进行解析时,对逐个标签进行扫描,每遇到一个标签时可以触发相应的事件,从而得到该标签的各种属性,这样,就可以按照步骤202中定义的规则库对该标签进行相应的处理。例如,扫描到々able、且该标签属于保留标签库,则保留*代表的这一行代码;反之,如果该标签属于去除标签库,则去除*代表的这一行代码;另外,如果没有对该标签进行规则定义,则执行默认操作,即去除该标签,而保留剩下的内容,即保留〈trxtd〉文本々tdx/tr〉。这样,经过步骤201和202,完成对包含HTML代码内容的补齐和过滤处理。显而易见的,步骤201和步骤202也可以各在一次遍历解析中完成,例如各在一次SAX解析中完成。步骤203:根据自定义的处理需求对HTML标签的细节进行修正。前述步骤是对HTML代码进行简单的保留、去除和补齐处理,该步骤则是对HTML代码的的细节,即对其标签或属性进行修正处理。对这些细节的具体处理可以才艮据不同的需求进行。需求l:例如需要检验HTML代码中标签间的父子关系的正确性时,采用遍历的方法检验。以检验HTML代码中〈table〉的标签和〈tdxtr〉标签间父子关系的正确性为例,^換照如下处理if(如果这个节点type==Node.ELEMENT_NODE&&节点name是tr)if(如果这个节点的父节点name不是table)去除这个节点和子节点,继续遍历条件elseif(如果这个节点type==Node.ELEMENT—NODE&&节点name是td)if(如果这个节点的父节点name不是tr||这个节点的父节点的父节点name不是table)去除这个节点和子节点,继续遍历条件其中,节点可以是HTML代码中的一对标签,或标签的内容,或标签下的文本。例如按照该遍历方法^^验以下代码时〈tr〉〈td〉文本〈/tdx/tr〉这段代码必须在父标签〈table〉内才是完整的,即该段代码的父子关系不正确,按照上述处理方法,去除々rxtdx/tdx/tr、这样,利用类似的遍历方法,检验了HTML代码中的父子关系的正确性。需求2:本步骤需要限制HTML代码中的内容,例如要限制超链接a标签中的href属性,可以用简单的正则表达式处理。HTML代码中的a标签例如<ahref="http:〃club.china.alibaba.com"></a>。以允i午输入类似http:〃www.xxx.com的网址为例,可以利用A((http|ftp|https):\V\V(\\S+|\\n))|(www\\.(\\S+|\\n))这一正则表达式处理,该正则表达式的意思是设置了对超链接的限制条件必须是以http或ftp或https开头,之后必须是://,之后可以没有www,但是如果有www则必须是www的形式。这样,由正则表达式对HTML代码中的超链接作了限制,以检验超链接的正确性。如果不符合正则表达式的要求,则返回错误信息,并不把该内容作为超链接处理,例如可以作删除处理,还可以按照普通文本的形式输出以显示在页面上。需求3:本步骤需要对HTML代码的一些内容进行限制,如禁止或进行替换。例如输入的是恶意代码,可能需要保留这个标签,而不是筒单的去除,则可以将恶意代码替换成允许接收的代码。再例如文本中存在反动、色情的词汇,将该类文字去除,还可以是将这些词汇进行替换.根据该需求,可以设置恶意代码库,还可以设置限制词汇库,以对HTML代码的内容做相应的处理。具体的处理过程,可以釆用正则表达式,对才企测到的属于上述恶意代码库和/或限制词汇库的代码或内容进行替换和删除等操作。当然,本步骤还可能包括其它需求,在此不再例举。步骤204:将HTML代码中的非标准代码转换成标准代码。文本中经常有一些非标准代码,如Vn,让之类的特殊代码,实际上是表示换行,但是浏览器把这类代码当作普通文本,而不会解析这种代码代表的意义,因此会使浏览器的页面显示出问题;文本中还经常有HTML的语法关键字,如"<"、">"这类代码,也会使浏览器的页面显示出问题,则该步骤将这些代码转换为浏览器可以解析的代码,例如将">"转换为"&gt",将"Vn"转换为"<br>",这样,浏览器可以解析这一经过转换的标准代码,因此,可以避免浏览器的页面显示出现问题。具体的,可以预置一个代码转换表,将浏览器不能解析的代码映射为浏览器可以解析的标准代码。预置的代码表可以如下表所示<table>tableseeoriginaldocumentpage13</column></row><table>表l.非标准代码与标准代码的映射表与步骤201和202所述的相类似,步骤203和204可以在一次解析的过程中完成,例如可以在一次SAX解析的过程中完成,并可以在利用SAX解析时,对步骤203和204的操作混合执行,即不分先后,只需满足任一步骤的条件即可执行。同样显而易见的,步骤203和步骤204也可以各在一次遍历解析中完成,例如各在一次SAX解析中完成。上述步骤201至204可以应用在用户输入的包含HTML代码的内容提交和回显过程中经过服务器的不同阶段,即在不同的时机对包含HTML代码的内容作处理,都可以满足本发明的目的,即消除包含HTML代码的内容中的有害代码。以下举两个实施例加以说明。图3示出了第一个实施例处理流程。301:用户通过终端输入包含HTML代码的内容,并提交到服务器;302:服务器将用户提交的包含HTML代码存入数据库;303:用户请求显示之前输入的包含HTML代码的内容;304:数据库发送用户请求的包含HTML代码的内容到服务器;305:服务器对收到包含HTML代码的内容做如下处理后发送到用户所在的客户端并显示遍历解析输入的HTML代码过程中补齐不完整的HTML标签;根据预定义的规则对HTML代码进行过滤;遍历解析经补齐和过滤的HTML代码过程中对HTML代码根据需求按照预置的对应操作进行修正;根据预置的代码表将HTML代码中浏览器非标准代码转换为标准代码。上述处理即为步骤201至204所描述方法的处理过程。这种情况是在每次用户请求显示之前输入的包含HTML代码的内容时,由服务器对该内容做消除有害HTML代码的处理,再发送到用户所在的客户端并显示。第二实施例与此类似,图4示出了第二个实施例的处理流程。401:用户通过终端输入包含HTML代码的内容,并提交到服务器;402:服务器对收到包含HTML代码的内容做如下处理后发送到数据库;遍历解析输入的HTML代码过程中补齐不完整的HTML标签;根据预定义的规则对HTML代码进行过滤;遍历解析经补齐和过滤的HTML代码过程中对HTML代码根据需求按照预置的对应操作进行修正;根据预置的代码表将HTML代码中浏览器非标准代码转换为标准代码。上述处理即为步骤201至204所描述方法的处理过程。403:用户请求显示之前输入的包含HTML代码的内容;404:数据库发送用户请求的包含HTML代码的内容到服务器,再由服务器转发到用户所在的客户端并显示。这种情况是在用户输入包含HTML代码的内容并提交时,由服务器对该内容做消除有害HTML代码的处理,再发送到数据库,当用户请求显示之前输入的包含HTML代码的内容时,数据库直接将该内容通过服务器发送到用户所在的客户端,且这一过程中服务器不需再对包含HTML代码的内容做处理,能使包含该内容的浏览器页面正常显示。由以上实施例可见,本发明在包含HTML代码的内容经过服务器的过程中,由服务器通过对这些代码进行补齐、过滤、修正和转换处理,可以有效消除HTML中的有害代码,使Web页面可以正常显示,从而保障了服务器的性能,并可以防止恶意代码进行的网络攻击,提高了服务器的安全性。虽然通过实施例描绘了本发明,本领域普通技术人员知道,本发明有许多变形和变化而不脱离本发明的精神,希望所附的权利要求包括这些变形和变化而不脱离本发明的精神。权利要求1、一种消除超文本标记语言HTML中有害代码的方法,其特征在于,包括步骤遍历解析输入的HTML代码过程中补齐不完整的HTML标签;根据预定义的规则对HTML代码进行过滤;遍历解析经补齐和过滤的HTML代码过程中对HTML代码根据需求按照预置的对应操作进行修正;根据预置的代码表将HTML代码中浏览器非标准代码转换为标准代码。2、如权利要求1所述的方法,其特征在于,所述根据预定义的规则进行过滤由以下方式实现预定义保留规则保留标签库中存储允许接收的HTML标签,对符合保留标签库的标签估支保留处理;预定义去除规则去除标签库中存储不允许接收的HTML标签,对符合去除标签库的标签做去除处理;预定义默认规则对不在保留标签库和去除标签库中的标签仅去除其HTML标签,保留该标签下的内容;根据预定义的保留规则、去除规则和默认规则对解析结果进行过滤。3、如权利要求2所述的方法,其特征在于,预定义规则进一步包括增加和/或减少和/或改变所述保留标签库和/或去除标签库中的标签。4、如权利要求l所述的方法,其特征在于,所述修正步骤由以下方式实现根据检验父子关系正确性的需求,根据对应的删除操作,删除父子关系不正确的节点;和/或才艮据检验超链接正确性的需求,利用正则表达式对不正确的超链接按照对应的操作进行删除,或以普通文本进行处理;和/或根据限制输入的HTML代码内容的需求,根据预置的恶意代码库和/或根据预置的限制词汇库,利用正则表达式删除或替换该恶意代码和/或词汇。5、如权利要求1所述的方法,其特征在于,所述转换步骤由以下方式实现根据预置的转换代码表,将HTML的文本中特殊代码和/或语法关键字转换为标准代码。6、如权利要求1所述的方法,其特征在于,所述补齐和过滤步骤在两次遍历解析过程中分别完成。7、如权利要求1所述的方法,其特征在于,所述修正和转换步骤在两次遍历解析过程中分别完成。8、如权利要求l、6或7任一项所述的方法,其特征在于,所述遍历解析采用SAX解析或HTMLDOM解析。9、一种提交和回显包含HTML内容的方法,其特征在于,由以下步骤实现A.用户通过终端输入包含HTML代码的内容并提交到服务器;B.服务器将用户提交的包含HTML代码存入数据库;C.用户请求显示所述输入的包含HTML代码的内容;D.数据库发送用户请求的包含HTML代码的内容到服务器;E.服务器对收到包含HTML代码的内容进行以下处理遍历解析输入的HTML代码过程中补齐不完整的HTML标签;根据预定义的规则对HTML代码进行过滤;遍历解析经补齐和过滤的HTML代码过程中对HTML代码根据需求按照预置的对应操作进行修正;根据预置的代码表将HTML代码中浏览器非标准代码转换为标准代码;F.将经过处理的包含HTML代码的内容发送到客户端并显示。10、一种提交和回显包含HTML内容的方法,其特征在于,由以下步骤实现A.用户通过终端输入包含HTML代码的内容,并提交到服务器;B.服务器对收到包含HTML代码的内容进行以下处理遍历解析输入的HTML代码过程中补齐不完整的HTML标签;根据预定义的规则对HTML代码进行过滤;遍历解析经补齐和过滤的HTML代码过程中对HTML代码根据需求按照预置的对应操作进行修正;根据预置的代码表将HTML代码中浏览器非标准代码转换为标准代码;C.将经过处理的包含HTML代码的内容发送到数据库;D.用户请求显示之前输入的包含HTML代码的内容;E.数据库发送用户请求的包含HTML代码的内容经由到服务器到客户端。全文摘要本发明公开了一种消除超文本标记语言HTML中有害代码的方法,包括步骤遍历解析输入的HTML代码过程中补齐不完整的HTML标签;根据预定义的规则对HTML代码进行过滤;遍历解析经补齐和过滤的HTML代码过程中对HTML代码根据需求按照预置的对应操作进行修正;根据预置的代码表将HTML代码中浏览器非标准代码转换为标准代码。可以在用户输入包含HTML内容的代码并提交后由服务器进行所述方法的处理,也可以在数据库将存储的包含HTML内容的代码经由服务器发送到客户端的过程中进行所述方法的处理。利用本发明,可以消除超文本标记语言中的有害代码,使网页能够正常显示,从而保障服务器的性能,同时提高服务器的安全性,并在该过程中不影响用户的感受。文档编号G06F17/30GK101192217SQ200610145970公开日2008年6月4日申请日期2006年11月28日优先权日2006年11月28日发明者波陈,磊鲍申请人:阿里巴巴公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1