发明内容
本发明提供一种跨站脚本攻击防御方法和装置、应用服务器,用于提高防御跨站脚本攻击的效率。
本发明的第一方面是提供一种跨站脚本攻击防御方法,包括:
应用服务器接收终端发送的访问请求;所述访问请求用于请求访问所述应用服务器中的应用程序;
所述应用服务器对所述访问请求进行解析,获得请求头;所述请求头包括终端通过Web网页的表单输入的目标信息;
所述应用服务器利用正则表达式,将特征库中的关键字与所述请求头中的所述目标信息进行匹配;所述特征库是预先建立的,用于存储恶意代码的关键字;
若所述特征库中存在与所述请求头中的所述目标信息匹配的关键字,则所述应用服务器确定所述请求头中的所述目标信息存在恶意代码,拒绝所述访问请求,以避免所述应用服务器中的应用程序接收到所述访问请求。
本发明的第二方面是提供一种跨站脚本攻击防御装置,包括:
接收模块,用于接收终端发送的访问请求;所述访问请求用于请求访问所述应用服务器中的应用程序;
第一解析模块,用于对所述访问请求进行解析,获得请求头;所述请求头包括终端通过Web网页的表单输入的目标信息;
第一匹配模块,用于利用正则表达式,将特征库中的关键字与所述请求头中的所述目标信息进行匹配;所述特征库是预先建立的,用于存储恶意代码的关键字;
处理模块,用于若所述特征库中存在与所述请求头中的所述目标信息匹配的关键字,则所述应用服务器确定所述请求头中的所述目标信息存在恶意代码,拒绝所述访问请求,以避免所述应用程序接收到所述访问请求。
本发明的第三方面是提供一种应用服务器,所述应用服务器中运行至少一个应用程序,包括第二方面所述的跨站脚本攻击防御装置,所述应用服务器向所述至少一个应用程序共享所述跨站脚本攻击防御装置。
本发明提供的跨站脚本攻击防御方法和装置、应用服务器,通过应用服务器接收终端发送的访问请求,对访问请求进行解析,获得请求头,利用正则表达式,将特征库中的关键字与所述请求头中的所述目标信息进行匹配,若特征库中存在与请求头中的目标信息匹配的关键字,则应用服务器确定请求头中的目标信息存在恶意代码,则应用服务器拒绝访问请求,从而对跨站脚本攻击进行防御,由于采用了在应用服务器上统一对终端发送的访问请求进行检测,从而避免了对每个Web网页进行硬编码,减小了工作量,提高了防御跨站脚本攻击的效率。
具体实施方式
图1为本发明一实施例提供的跨站脚本攻击防御方法的流程示意图,如图1所示,包括:
101、应用服务器接收终端发送的访问请求。
其中,访问请求用于请求访问应用服务器中的应用程序。
进一步101之前,应用服务器对历史跨站脚本攻击的恶意代码进行分析,获得恶意代码的关键字,建立存储所述恶意代码的关键字的特征库。
102、应用服务器对访问请求进行解析,获得请求头。
其中,请求头包括终端通过Web网页的表单输入的目标信息。
103、应用服务器利用正则表达式,将特征库中的关键字与请求头中的目标信息进行匹配。
104、若特征库中存在与请求头中的目标信息匹配的关键字,则应用服务器确定请求头中的目标信息存在恶意代码,拒绝访问请求,以避免应用服务器中的应用程序接收到该访问请求。
进一步,若所述特征库中不存在与所述请求头中的所述目标信息匹配的关键字,则所述应用服务器确定所述请求头中的所述目标信息不存在恶意代码,允许所述终端访问所述访问请求所请求访问的应用程序。
进一步,101之后,还包括应用服务器对所述访问请求进行解析,获得请求参数,应用服务器利用正则表达式,将特征库中的关键字与请求参数中的URL进行匹配,确定所述特征库中不存在与请求参数中的URL匹配的关键字。请求参数包括访问请求所请求访问的应用程序的URL。
本实施例中,通过应用服务器接收终端发送的访问请求,对访问请求进行解析,获得请求头,利用正则表达式,将特征库中的关键字与所述请求头中的所述目标信息进行匹配,若特征库中存在与请求头中的目标信息匹配的关键字,则应用服务器确定请求头中的目标信息存在恶意代码,则应用服务器拒绝访问请求,从而对跨站脚本攻击进行防御,由于采用了在应用服务器上统一对终端发送的访问请求进行检测,从而避免了对每个Web网页进行硬编码,减小了工作量,提高了防御跨站脚本攻击的效率。
图2为本发明另一实施例提供的跨站脚本攻击防御方法的流程示意图,本实施例中的跨站脚本攻击防御方法可应用于应用服务器中;应用程序设置于该应用服务器中,具体可为用于生成包含动态内容Web网页的Web应用程序,如图2所示,包括:
201、应用服务器接收终端发送的各个请求。
202、应用服务器从接收到的各个请求中过滤出访问请求。
其中,访问请求为终端在请求访问应用程序时发送的,例如:超文本传输协议(Hypertext transfer protocol,http)请求,包括请求头和请求参数。请求头包括终端通过Web网页的表单输入的目标信息,用于指示终端请求应用程序显示的信息。请求参数用于指示终端所请求访问的应用程序的统一资源定位符(UniformResource Locator,URL)。
由于应用程序为用于生成含动态内容的Web网页的Web应用程序,当用户终端利用应用程序显示信息时,需要将请求应用程序显示的信息设置于请求头中,并将应用程序的URL设置于请求参数中,以使应用程序根据该访问请求生成包含终端所请求应用程序显示信息的Web网页。
例如:用户终端浏览允许用户发表帖子等信息的Web网页时,可通过Web网页的文字输入栏获取用户输入的需要显示的信息,将该信息加入到请求头中生成访问该Web网页所属的应用程序的访问请求,向应用服务器发送访问请求,以使应用服务器根据访问请求,重新生成包含用户输入的需要显示的信息的Web网页,将重新生成的Web网页返回到用户终端进行显示。
203、应用服务器利用正则表达式,将特征库中的关键字与访问请求进行匹配。
其中,特征库是预先建立的,用于存储恶意代码的关键字。
需要说明的是,本实施例中的应用程序为设置于应用服务器中的各个应用程序中的一个应用程序,应用服务器共享特征库,以根据该特征库,检测用于访问各个应用程序的访问请求中是否存在恶意代码。
204、判断特征库中是否存在与访问请求匹配的关键字,若存在执行205,否则执行206。
205、应用服务器拒绝访问请求。
若特征库中存在与访问请求匹配的关键字,则检测出访问请求中存在恶意代码。若应用程序根据包含恶意代码的访问请求生成Web网页,则该Web网页中也会包含的恶意代码,其余终端在浏览到包含恶意代码的Web网页时,其余终端会执行该恶意代码,从而受到跨站脚本攻击。因此,需要拒绝该访问请求。
例如:若第一用户终端通过留言本应用程序或论坛应用程序发表了包含恶意代码的帖子,那么第二用户在浏览包含该帖子的Web网页时,就会执行该帖子中的恶意代码,盗取第二用户的会话信息。
206、应用服务器允许终端访问应用程序。
本实施例中,通过应用服务器接收终端发送的访问请求,对访问请求进行解析,获得请求头,利用正则表达式,将特征库中的关键字与所述请求头中的所述目标信息进行匹配,若特征库中存在与请求头中的目标信息匹配的关键字,则应用服务器确定请求头中的目标信息存在恶意代码,则应用服务器拒绝访问请求,从而对跨站脚本攻击进行防御,由于采用了在应用服务器上统一对终端发送的访问请求进行检测,从而避免了对每个Web网页进行硬编码,减小了工作量,提高了防御跨站脚本攻击的效率。
图3为本发明一实施例提供的跨站脚本攻击防御装置的结构示意图,本实施例中的跨站脚本攻击防御装置可设置于应用服务器中,如图3所示,包括:接收模块31、第一解析模块32、第一匹配模块33和处理模块34。
接收模块31,用于接收终端发送的访问请求。
其中,访问请求用于请求访问应用服务器中的应用程序。
第一解析模块32,与接收模块31连接,用于对访问请求进行解析,获得请求头。
其中,请求头包括终端通过Web网页的表单输入的目标信息。
第一匹配模块33,与第一解析模块32连接,用于利用正则表达式,将特征库中的关键字与所述请求头中的所述目标信息进行匹配。
其中,特征库是预先建立的,用于存储恶意代码的关键字。
处理模块34,与第一匹配模块33连接,用于若所述特征库中存在与所述请求头中的所述目标信息匹配的关键字,则所述应用服务器确定所述请求头中的所述目标信息存在恶意代码,拒绝所述访问请求,以避免应用程序接收到访问请求。
进一步,处理模块34还用于若所述特征库中不存在与所述请求头中的所述目标信息匹配的关键字,则所述应用服务器确定所述请求头中的所述目标信息不存在恶意代码,允许所述终端访问所述访问请求所请求访问的应用程序。
本实施例中,通过应用服务器接收终端发送的访问请求,对访问请求进行解析,获得请求头,利用正则表达式,将特征库中的关键字与所述请求头中的所述目标信息进行匹配,若特征库中存在与请求头中的目标信息匹配的关键字,则应用服务器确定请求头中的目标信息存在恶意代码,则应用服务器拒绝访问请求,从而对跨站脚本攻击进行防御,由于采用了在应用服务器上统一对终端发送的访问请求进行检测,从而避免了对每个Web网页进行硬编码,减小了工作量,提高了防御跨站脚本攻击的效率。
图4为本发明另一实施例提供的跨站脚本攻击防御装置的结构示意图,如图4所示,在上一实施例的基础上,本实施例中的跨站脚本攻击防御装置进一步包括:第二解析模块35、第二匹配模块36和建立模块37。
第二解析模块35,与接收模块31连接,用于接收终端发送的所述访问请求之后,对所述访问请求进行解析,获得请求参数。
其中,请求参数包括访问请求所请求访问的应用程序的URL。
第二匹配模块36,与第二解析模块35和处理模块34连接,用于利用所述正则表达式,将所述特征库中的关键字与所述请求参数中的所述URL进行匹配,确定所述特征库中不存在与所述请求参数中的所述URL匹配的关键字。
建立模块37,与第二匹配模块36和第一匹配模块33连接,用于对历史跨站脚本攻击的恶意代码进行分析,获得恶意代码的关键字,建立存储所述恶意代码的关键字的所述特征库。
本实施例提供的跨站脚本攻击防御装置可封装为Java归档文件(JavaArchive,JAR)包,共享给其他Java Web应用程序使用,避免分别设置每个Java Web应用程序对应的跨站脚本攻击防御装置。
本发明实施例还提供一种应用服务器,该应用服务器中运行至少一个应用程序,应用服务器包括上述跨站脚本攻击防御装置,应用服务器还包括共享装置,该共享装置用于向所述至少一个应用程序共享跨站脚本攻击防御装置。从而,当需要对跨站脚本攻击防御装置进行维护时,仅需要通过对应用服务器现有的系统中的该跨站脚本攻击防御装置进行加固,无需针对每一个应用程序开发加固代码。
本实施例中,通过应用服务器接收终端发送的访问请求,对访问请求进行解析,获得请求头,利用正则表达式,将特征库中的关键字与所述请求头中的所述目标信息进行匹配,若特征库中存在与请求头中的目标信息匹配的关键字,则应用服务器确定请求头中的目标信息存在恶意代码,则应用服务器拒绝访问请求,从而对跨站脚本攻击进行防御,由于采用了在应用服务器上统一对终端发送的访问请求进行检测,从而避免了对每个Web网页进行硬编码,减小了工作量,提高了防御跨站脚本攻击的效率。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。