富文本内容的处理方法和服务器的制作方法

文档序号:6383326阅读:489来源:国知局
专利名称:富文本内容的处理方法和服务器的制作方法
技术领域
本发明涉及计算机网络安全技术领域,具体涉及一种富文本内容的处理方法和服务器。
背景技术
在WEB2. O时代,网络产品提供文本发布入口让用户来产生内容。为了满足用户创造内容更加丰富化的需求,文本发布入口通常支持富文本格式的内容,即包含HTML标签的内容。用户通过文本发布入口将富文本内容发布到服务端,服务端需要对富文本内容进行安全检查和过滤,然后进行存储和展现。现有的富文本的传输与过滤方法具体为用户在浏览器端创造富文本,然后浏览器直接将富文本发送到服务端;服务端对富文本进行词法分析和语法分析,对可能产生安全问题的内容进行过滤,最终得到相对安全的内容。但是,由于富文本的内容非常复杂,而且各个浏览器对富文本支持的一些语法上有差异,导致服务端过滤的时候需要知道所有浏览器一些细微的特性,工作量非常巨大。并且有些特征是由于浏览器的BUG导致的。这种情况下,虽然服务端做了大量的安全过滤工作,但往往还是会出现安全漏洞,危及产品安全。总而言之,服务端对富文本的过滤逻辑非常复杂,而且也不能保证100%安全;服务端的过滤十分耗时,会对性能产生一定影响,从而影响用户的发布效率。
S明内容鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的富文本内容的处理方法和服务器。根据本发明的一个方面,提供了一种富文本内容的处理方法。富文本内容包括一个或者多个标签,一个或者多个标签嵌套,并且每个标签具有相关联的一个或者多个属性。根据本发明的富文本内容处理方法还包括获取对富文本内容进行转化而得到的结构化数据,结构化数据对富文本内容中的各个标签和属性进行结构化描述;将结构化数据转换为对象化数据,对象化数据包括与各个标签和属性相对应的一个或者多个数据对象;使用预先配置的规则对对象化数据进行处理,以便删除与预先配置的规则定义要保留的标签和属性相对应的数据对象之外的数据对象;以及将处理后的数据对象进行转义处理,以获得经处理的富文本内容。根据本发明的另一方面,提供了 一种服务器,包括网络接口,适于获取对富文本内容进行转化而得到的结构化数据,富文本内容包括一个或者多个标签,一个或者多个标签嵌套,并且每个标签具有相关联的一个或者多个属性,而结构化数据对富文本内容中的各个标签和属性进行结构化描述;数据转换器,适于将网络接口获得的结构化数据转换为对象化数据,对象化数据包括与各个标签和属性相对应的一个或者多个数据对象;过滤器,适于使用预先配置的规则对由数据转换器转换得到的对象化数据进行处理,以便删除与预先配置的规则定义要保留的标签和属性相对应的数据对象之外的数据对象;转义器,适于将过滤器处理后的数据对象进行转义处理,以获得经处理的富文本内容。根据本发明提供的方案,通过获取对富文本内容进行转化而得到的结构化数据,将结构化数据转换为对象化数据,使用预先配置的规则对对象化数据进行处理,以便删除与预先配置的规则定义要保留的标签和属性相对应的数据对象之外的数据对象,也即过滤掉预先配置的规则定义的要保留的信息以外的信息,再进行转义处理以获得经处理的富文本内容。本发明将富文本内容通过两步转换成为数据对象再进行过滤处理,与现有技术直接对富文本内容本身进行过滤相比,大大简化了对富文本内容过滤的处理逻辑,使得处理性能大大提高。另外,这样转化后的富文本内容即保留了原富文本内容的绝大部分格式,又更加规范,从而减少了由于富文本内容而导致页面呈现出现问题的缺陷。另外,根据本发明提供的方案,通过将对富文本内容的处理过程分解为在客户端上进行的一部分处理和在服务器上进行的另一部分处理。在客户端上首先把富文本内容转化为结构化数据,然后在服务器上对结构化数据进行再次处理并转化为富文本内容,由于结构化数据更容易处理,所以这种方案,可以把有可能由于客户端差异而导致的富文本内容的格式缺陷留在客户端处来进行处理,而服务器仅仅处理基本没有格式缺陷的数据,从而可以大大简化服务器处的处理过程。上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式



通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中图1示出了一段文本的示意图;图2示出了根据本发明一个实施例的富文本内容的处理方法的流程图;图3示出了根据本发明一个实施例的富文本内容的处理系统的结构框图。
具体实施例方式下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。本文中所提到的富文本内容是一种包含标签(如HTML标签)的文本内容。更为具体地说,富文本内容包括一个或者多个标签,其中一个或者多个标签可以嵌套,即一个标签中可以包含一个或多个其它的标签。每个标签可以具有相关联的一个或者多个属性。图1示出了一段文本的示意图,这段文本对应的富文本内容如下<hl>—种富文本传输与过滤装置</hl><img src=//http : //ww2. sinaimg. cn/bmiddle/68361562gwldy4vayca80 j.jpg" width="440"height="315"/></p> 〈span style=〃color:#548dd4; 〃>两个男孩同时喜欢上了一个女孩,吸引住男孩的究竟是女孩身上的什么特质呢?想清楚了这个问题的男孩成了哲学家,没想清楚这个问题的成了这个女人的丈夫。〈/span〉</p><strong>by welefen</strong>(<a href = ^http : // www. we I ef en.com〃target=〃_self〃 >http://www. welefen. com〈/a>)</p>在上述富文本内容中,“<hl> —种富文本传输与过滤装置</hl>”为一个HTML标签。“<img src=//http : //ww2. sinaimg. cn/bmiddle/68361562gwldy4vayca80 j.jpg//width=//440//height=//315///></p>”为一个HTML标签,这个HTML标签中还嵌套了另一个HTML标签“〈img src = //http://ww2. sinaimg. cn/bmiddle/68361562gwldy4vayca80j.jpg " width="440"height="315"/>”。另外,在 HTML 标签“〈img src=//http://ww2.sinaimg. cn/bmiddle/68361562gwldy4vayca80j. jpg " width="440"height="315"/>,,中,“src = "http://ww2. sinaimg. cn/bmiddle/68361562gwldy4vayca80j.jpg" width=〃440〃height=〃315" ”为该HTML标签的3个属性,分别表示图片的url,宽度和高度。本发明以图1所示的文本对应的富文本内容作为例子,进一步介绍本发明的技术方案。图2示出了根据本发明一个实施例的富文本内容的处理方法200的流程图。如图2所示,方法200始于步骤S201,其中服务器获取对富文本内容进行转化而得到的结构化数据。也就是说,在服务器对富文本内容进行处理之前,需要首先将富文本内容转化为结构化数据。可选择地,可以事先在客户端处进行该转化。因此,在本方法中,在客户端获取到用户在客户端创造的富文本内容之后,客户端对富文本内容进行转化得到结构化数据,该结构化数据是对富文本内容中的各个标签和属性进行的结构化描述。可选地,结构化数据包括各个标签的标签名、标签内容和与该标签相关联的一个或者多个属性,以及各个标签之间的嵌套关系。具体地,根据本发明的一个实施例,驻留在客户端的javascript代码将富文本内容转化为结构化数据。举例而言,对上述富文本内容进行转化得到的结构化数据为[ {〃tag〃 〃hl〃,〃child〃 [ {〃text〃 〃\n — 种富文本传输与过滤装置\11"}]},{ " text":"\n"},{ " tag":"p","child":
n〃},{ " tag〃〃img〃,〃attr〃{ " src〃"http://ww2.sinaimg.cn/bmiddle/68361562gwldy4vayca80j. jpg", "width":"440","height":"315"}},{ " text": O ]},{〃 text": O,{〃 tag": "p", "chiIcT: [ {"text": O,{" tag": "span", "attr": { " style": "color: #548dd4; "}, "child": [ { " text":"两个男孩同时喜欢上了一个女孩,吸引住男孩的究竟是女孩身上的什么特质呢?想清楚了这个问题的男孩成了哲学家,没想清楚这个问题的成了这个女人的丈夫。〃}]},{〃teXt〃:〃\n〃}]},{"text 、η"},{ " tag":"p", "chilcT:[{"text": O,{ " tag":"strong", "chiIcT:[{"text",by welefen^} ]}, { " text": " O,{"tag": "a", "attr": { " href " ,http://www.welefen.com〃,〃target〃〃self〃}, 〃child〃[{〃text〃〃http://www.welefen.这是一种JSON格式的结构化数据,本发明并不受限于此,并且所有可以对数据进行结构化描述的格式都在本发明的保护范围之内。如上所述,结构化数据{" tag〃:〃hl","child": [{" text〃:〃\n—种富文本传输与过滤装置\n"}]}是由标签“<hl> —种富文本传输与过滤装置</hl>”转化得到的,该结构化数据包括标签的标签名“hl”,标签内容“一种富文本传输与过滤装置”。其中,结构化数据{ 〃 tag": "P", "chilcT: [ {"text": η},{ 〃 tag": "img'"attr": { 〃 src": "http://ww2. sinaimg. cn/bmiddle/68361562gwldy4vayca80j.jpg〃,"width":〃440〃,"height":"315"}},{ " text": "\n"} ]}是由标签“〈pXimg src=//http://ww2. sinaimg. cn/bmiddle/68361562gwldy4vayca80j. jpg//width=//440//height=//315///></p>”转化得到的,该结构化数据包括标签的标签名“P”和“img”和对应的标签内容,以及与标签相关联的属性“〃attr〃 { " src〃 〃http://ww2. sinaimg. cn/bmiddle/68361562gwldy4vayca80j. jpg", "width":"440","height":"315"}”,其中“ text":"\n} ”表示标签内容中的换行。另外,标签名为“P”的标签与标签名为“img”的标签的嵌套关系也体现在结构化数据中,具体为标签名为“ img”的标签是标签名为“p”的标签的标签内容。

在客户端得到上述结构化数据之后,将其传递给服务器,服务器由此获取对富文本内容进行转化而得到的结构化数据。随后,方法200进入步骤S202,其中服务器将结构化数据转换为对象化数据。具体地,服务器可以利用各种编程语言原生提供的功能将结构化数据转换为对象化数据。转换得到的对象化数据包括与各个标签和属性相对应的一个或者多个数据对象。可选地,步骤S202将字符串形式的结构化数据转为具有相互关联关系的一个或者多个数据对象。以结构化数据具有JSON格式为例,JSON格式是指将javascript对象中的一组数据转换得到的字符串格式,对于这种格式的结构化数据,可以使用PHP语言中的json_decode方法实现对结构化数据的转换。json_deCode方法是将JSON格式的字符串进行解码,从而转换为PHP的关联数组,即具有相互关联关系的数据对象。应当注意的是,本发明不受限于具体编程语言,所以可以把JSON格式的字符串转换为具有相互关联关系的数据对象都在本发明的保护范围之内。随后,方法200进入步骤S203,其中服务器使用预先配置的规则对对象化数据进行处理,以便删除与预先配置的规则定义要保留的标签和属性相对应的数据对象之外的数据对象。预先配置的规则可以为白名单规则,该白名单规则定义了允许保留的标签和属性。例如,下文中示出了一个与白名单规则相对应的配置文件
权利要求
1.一种富文本内容的处理方法,所述富文本内容包括一个或者多个标签,所述一个或者多个标签嵌套,并且每个标签具有相关联的一个或者多个属性,该方法包括 获取对富文本内容进行转化而得到的结构化数据,所述结构化数据对所述富文本内容中的各个标签和属性进行结构化描述; 将所述结构化数据转换为对象化数据,所述对象化数据包括与各个标签和属性相对应的一个或者多个数据对象; 使用预先配置的规则对所述对象化数据进行处理,以便删除与所述预先配置的规则定义要保留的标签和属性相对应的数据对象之外的数据对象; 将处理后的数据对象进行转义处理,以获得经处理的富文本内容。
2.根据权利要求1所述的方法,所述结构化数据包括各个标签的标签名、标签内容和与该标签相关联的一个或者多个属性,以及各个标签之间的嵌套关系。
3.根据权利要求1或2所述的方法,所述将结构化数据转为对象化数据对象包括将字符串形式的结构化数据转为具有相互关联关系的一个或者多个数据对象。
4.根据权利要求3所述的方法,所述结构化数据具有JSON格式。
5.一种服务器,包括 网络接口,适于获取对富文本内容进行转化而得到的结构化数据,所述富文本内容包括一个或者多个标签,所述一个或者多个标签嵌套,并且每个标签具有相关联的一个或者多个属性,所述结构化数据对所述富文本内容中的各个标签和属性进行结构化描述; 数据转换器,适于将所述网络接口获得的所述结构化数据转换为对象化数据,所述对象化数据包括与各个标签和属性相对应的一个或者多个数据对象; 过滤器,适于使用预先配置的规则对由所述数据转换器转换得到的所述对象化数据进行处理,以便删除与所述预先配置的规则定义要保留的标签和属性相对应的数据对象之外的数据对象; 转义器,适于将所述过滤器处理后的数据对象进行转义处理,以获得经处理的富文本内容。
6.根据权利要求5所述的服务器,所述网络接口得到的结构化数据包括各个标签的标签名、标签内容和与该标签相关联的一个或者多个属性,以及各个标签之间的嵌套关系。
7.根据权利要求5或6所述的服务器,所述数据转换器进一步适于将所述网络接口获得的字符串形式的结构化数据转为具有相互关联关系的一个或者多个数据对象。
8.根据权利要求7所述的服务器,所述结构化数据具有JSON格式。
全文摘要
本发明公开了一种富文本内容的处理方法和服务器。其中方法包括获取对富文本内容进行转化而得到的结构化数据;将结构化数据转换为对象化数据;使用预先配置的规则对对象化数据进行处理,以便删除与预先配置的规则定义要保留的标签和属性相对应的数据对象之外的数据对象;将处理后的数据对象进行转义处理,以获得经处理的富文本内容。本发明将富文本内容通过两步转换成为数据对象再进行过滤处理,与现有技术直接对富文本内容本身进行过滤相比,大大简化了对富文本内容过滤的处理逻辑,使得处理性能大大提高。
文档编号G06F17/22GK103034622SQ20121051842
公开日2013年4月10日 申请日期2012年12月5日 优先权日2012年12月5日
发明者李成银 申请人:北京奇虎科技有限公司, 奇智软件(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1