CN111898128B - 一种针对跨站脚本攻击的防御方法及装置 - Google Patents

一种针对跨站脚本攻击的防御方法及装置 Download PDF

Info

Publication number
CN111898128B
CN111898128B CN202010771254.9A CN202010771254A CN111898128B CN 111898128 B CN111898128 B CN 111898128B CN 202010771254 A CN202010771254 A CN 202010771254A CN 111898128 B CN111898128 B CN 111898128B
Authority
CN
China
Prior art keywords
function
url
code
hijacking
javascript
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202010771254.9A
Other languages
English (en)
Other versions
CN111898128A (zh
Inventor
王忠儒
余伟强
姜海
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Digapis Technology Co ltd
Original Assignee
Beijing Digapis Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Digapis Technology Co ltd filed Critical Beijing Digapis Technology Co ltd
Priority to CN202010771254.9A priority Critical patent/CN111898128B/zh
Publication of CN111898128A publication Critical patent/CN111898128A/zh
Application granted granted Critical
Publication of CN111898128B publication Critical patent/CN111898128B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • G06F21/563Static detection by source code analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/955Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
    • G06F16/9566URL specific, e.g. using aliases, detecting broken or misspelled links
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/568Computer malware detection or handling, e.g. anti-virus arrangements eliminating virus, restoring damaged files

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Virology (AREA)
  • General Health & Medical Sciences (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computer And Data Communications (AREA)

Abstract

本申请提供了一种针对跨站脚本攻击的防御方法及装置,该方法通过获取对浏览器中信息进行前端过滤、Nginx过滤及后端过滤后得到的信息,在该信息中存在攻击者劫持JavaScript内置函数的代码时,对JavaScript内置函数进行劫持,将所述JavaScript内置函数中的恶意代码删除,并植入劫持代码,增强对跨站脚本攻击的防御。并且,在植入劫持代码之后,按照JavaScript内置函数的原生格式,向浏览器反馈植入劫持代码的JavaScript内置函数,降低攻击者发现JavaScript内置函数被劫持的概率,避免攻击者绕开劫持,进一步增强防御。

Description

一种针对跨站脚本攻击的防御方法及装置
技术领域
本申请涉及信息安全技术领域,特别涉及一种针对跨站脚本攻击的防御方法及装置。
背景技术
针对跨站脚本攻击(即XSS),现阶段大部分的网站一般采用以下三个步骤进行过滤和防御:前端过滤—>Nginx过滤—>后端过滤。
但是,前端过滤XSS、Nginx过滤及后端过滤,均可以被攻击者绕过,对网站信息的泄露造成威胁。因此,目前亟需一种防御方法,来增强对跨站脚本攻击的防御。
发明内容
为解决上述技术问题,本申请实施例提供一种针对跨站脚本攻击的防御方法及装置,以达到增强防御的目的,技术方案如下:
一种针对跨站脚本攻击的防御方法,包括:
获取后端需要反馈给浏览器的信息,所述后端需要反馈给浏览器的信息为对所述浏览器中信息进行前端过滤、Nginx过滤及后端过滤后得到的信息;
检测所述后端需要反馈给浏览器的信息中是否存在攻击者劫持JavaScript内置函数的代码;
若存在,则对所述JavaScript内置函数进行劫持,将所述JavaScript内置函数中的恶意代码删除,并植入劫持代码;
按照所述JavaScript内置函数的原生格式,向浏览器反馈植入所述劫持代码的JavaScript内置函数。
所述按照所述JavaScript内置函数的原生格式,向浏览器反馈植入所述劫持代码的JavaScript内置函数之后,还包括:
获取所述植入所述劫持代码的JavaScript内置函数,并检测所述植入所述劫持代码的JavaScript内置函数是否已被攻击者还原为所述JavaScript内置函数;
若是,则对所述植入所述劫持代码的JavaScript内置函数进行劫持,将所述植入所述劫持代码的JavaScript内置函数中的恶意代码删除,并再次植入劫持代码;
按照所述JavaScript内置函数的原生格式,向浏览器反馈再次植入所述劫持代码的JavaScript内置函数。
所述方法还包括:
从所述后端需要反馈给浏览器的信息中获取第三方JS引用url,并将所述第三方JS引用url与预先设定的安全url名单中的url进行枚举正则匹配;
将所述第三方JS引用url中,与所述预先设定的安全url名单中的url不匹配的url,作为异常url;
基于所述第三方JS引用url中,与所述预先设定的安全url名单中的url匹配的url,获取源代码,并判断所述源代码是否为JavaScript代码;
若是,过滤掉所述源代码。
所述判断所述源代码是否为JavaScript代码,包括:
判断所述源代码中是否存在多个不同设定类型的关键字。
所述基于所述第三方JS引用url中,与所述预先设定的安全url名单中的url匹配的url,获取源代码,包括:
调用Ajax函数,将所述第三方JS引用url中,与所述预先设定的安全url名单中的url匹配的url作为参数传递给后端接收函数;
所述后端接收函数以代理的方式对接收到的url进行解码,并使用curl访问解码后的url以获取源代码,将所述源代码反馈给所述Ajax函数。
所述方法还包括:
将所述JavaScript内置函数发送至后端数据库,以使所述后端数据库进行存储报警。
所述方法还包括:
将所述异常url及所述源代码发送至后端数据库,以使所述后端数据库进行存储报警。
一种针对跨站脚本攻击的防御装置,包括:
第一获取模块,用于获取后端需要反馈给浏览器的信息,所述后端需要反馈给浏览器的信息为对所述浏览器中信息进行前端过滤、Nginx过滤及后端过滤后得到的信息;
第一检测模块,用于检测所述后端需要反馈给浏览器的信息中是否存在攻击者劫持JavaScript内置函数的代码;
第一劫持模块,用于若所述后端需要反馈给浏览器的信息中存在攻击者劫持JavaScript内置函数的代码,则对所述JavaScript内置函数进行劫持,将所述JavaScript内置函数中的恶意代码删除,并植入劫持代码;
第一反馈模块,用于按照所述JavaScript内置函数的原生格式,向浏览器反馈植入所述劫持代码的JavaScript内置函数。
所述装置还包括:
第二获取模块,用于获取所述植入所述劫持代码的JavaScript内置函数,并检测所述植入所述劫持代码的JavaScript内置函数是否已被攻击者还原为所述JavaScript内置函数;
第二劫持模块,用于若所述植入所述劫持代码的JavaScript内置函数已被攻击者还原为所述JavaScript内置函数,则对所述植入所述劫持代码的JavaScript内置函数进行劫持,将所述植入所述劫持代码的JavaScript内置函数中的恶意代码删除,并再次植入劫持代码;
第二反馈模块,用于按照所述JavaScript内置函数的原生格式,向浏览器反馈再次植入所述劫持代码的JavaScript内置函数。
所述装置还包括:
匹配模块,用于从所述后端需要反馈给浏览器的信息中获取第三方JS引用url,并将所述第三方JS引用url与预先设定的安全url名单中的url进行枚举正则匹配;
第一确定模块,用于将所述第三方JS引用url中,与所述预先设定的安全url名单中的url不匹配的url,作为异常url;
第三获取模块,用于基于所述第三方JS引用url中,与所述预先设定的安全url名单中的url匹配的url,获取源代码;
判断模块,用于判断所述源代码是否为JavaScript代码;
过滤模块,用于若所述源代码为JavaScript代码,则过滤掉所述源代码。
所述判断模块,具体用于判断所述源代码中是否存在多个不同设定类型的关键字。
所述第三获取模块,具体用于:
调用Ajax函数,将所述第三方JS引用url中,与所述预先设定的安全url名单中的url匹配的url作为参数传递给后端接收函数;
所述后端接收函数以代理的方式对接收到的url进行解码,并使用curl访问解码后的url以获取源代码,将所述源代码反馈给所述Ajax函数。
所述装置还包括:
第一存储模块,用于将所述JavaScript内置函数发送至后端数据库,以使所述后端数据库进行存储报警。
所述装置还包括:
第二存储模块,用于将所述异常url及所述源代码发送至后端数据库,以使所述后端数据库进行存储报警。
与现有技术相比,本申请的有益效果为:
在本申请中,通过获取对浏览器中信息进行前端过滤、Nginx过滤及后端过滤后得到的信息,在该信息中存在攻击者劫持JavaScript内置函数的代码时,对JavaScript内置函数进行劫持,将所述JavaScript内置函数中的恶意代码删除,并植入劫持代码,增强对跨站脚本攻击的防御。并且,在植入劫持代码之后,按照JavaScript内置函数的原生格式,向浏览器反馈植入劫持代码的JavaScript内置函数,降低攻击者发现JavaScript内置函数被劫持的概率,避免攻击者绕开劫持,进一步增强防御。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请提供的一种针对跨站脚本攻击的防御方法实施例1的流程图;
图2是本申请提供的一种针对跨站脚本攻击的防御方法实施例2的流程图;
图3是本申请提供的一种针对跨站脚本攻击的防御方法实施例3的流程图;
图4是本申请提供的一种针对跨站脚本攻击的防御方法实施例4的流程图;
图5是本申请提供的一种针对跨站脚本攻击的防御方法实施例5的流程图;
图6是本申请提供的一种针对跨站脚本攻击的防御装置的逻辑结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
参照图1,为本申请实施例1提供的一种针对跨站脚本攻击的防御方法的流程图,如图1所示,该方法可以包括但并不局限于以下步骤:
步骤S11、获取后端需要反馈给浏览器的信息,所述后端需要反馈给浏览器的信息为对所述浏览器中信息进行前端过滤、Nginx过滤及后端过滤后得到的信息。
本实施例中,对浏览器中信息进行前端过滤、Nginx过滤及后端过滤的过程可以参见现有技术中相关过程,在此不再赘述。
步骤S12、检测所述后端需要反馈给浏览器的信息中是否存在攻击者劫持JavaScript内置函数的代码。
若存在,则执行步骤S13。
由于包含攻击代码的JavaScript内置函数,是不会向外公开里面的实现方法,所以JavaScript内置函数返回函数的时候,一般是function proc(){[native code]}类型,因此,本实施例中,可以通过检测后端需要反馈给浏览器的信息中,是否存在包含[nativecode]字符串的函数,来检测是否存在攻击者劫持JavaScript内置函数的代码。
如果后端需要反馈给浏览器的信息中,存在包含[native code]字符串的函数,则说明其中包含攻击者劫持JavaScript内置函数的代码。
步骤S13、对所述JavaScript内置函数进行劫持,将所述JavaScript内置函数中的恶意代码删除,并植入劫持代码。
对所述JavaScript内置函数进行劫持,并JavaScript内置函数中的恶意代码删除,并植入劫持代码,能避免JavaScript内置函数对网站进行攻击。
步骤S14、按照所述JavaScript内置函数的原生格式,向浏览器反馈植入所述劫持代码的JavaScript内置函数。
JavaScript内置函数的原生格式,可以理解为:最初封装JavaScript内置函数所采用的格式。
按照JavaScript内置函数的原生格式,向浏览器反馈植入劫持代码的JavaScript内置函数,能使攻击者不易发现JavaScript内置函数已经被劫持,从而避免植入劫持代码的JavaScript内置函数失效,以增强防御。
在本申请中,通过获取对浏览器中信息进行前端过滤、Nginx过滤及后端过滤后得到的信息,在该信息中存在攻击者劫持JavaScript内置函数的代码时,对JavaScript内置函数进行劫持,将所述JavaScript内置函数中的恶意代码删除,并植入劫持代码,增强对跨站脚本攻击的防御。并且,在植入劫持代码之后,按照JavaScript内置函数的原生格式,向浏览器反馈植入劫持代码的JavaScript内置函数,降低攻击者发现JavaScript内置函数被劫持的概率,避免攻击者绕开劫持,进一步增强防御。
作为本申请另一可选实施例,参照图2,为本申请提供的一种针对跨站脚本攻击的防御方法实施例2的流程图,本实施例主要是对上述实施例1描述的针对跨站脚本攻击的防御方法的扩展方案,如图2所示,该方法可以包括但并不局限于以下步骤:
步骤S21、获取后端需要反馈给浏览器的信息,所述后端需要反馈给浏览器的信息为对所述浏览器中信息进行前端过滤、Nginx过滤及后端过滤后得到的信息;
步骤S22、检测所述后端需要反馈给浏览器的信息中是否存在攻击者劫持JavaScript内置函数的代码;
若存在,则执行步骤S23。
步骤S23、对所述JavaScript内置函数进行劫持,将所述JavaScript内置函数中的恶意代码删除,并植入劫持代码。
步骤S24、按照所述JavaScript内置函数的原生格式,向浏览器反馈植入所述劫持代码的JavaScript内置函数。
步骤S21-S24的详细过程可以参见实施例1中步骤S11-S14的相关介绍,在此不再赘述。
步骤S25、获取所述植入所述劫持代码的JavaScript内置函数,并检测所述植入所述劫持代码的JavaScript内置函数是否已被攻击者还原为所述JavaScript内置函数。
若是,则执行步骤S26。
在将植入劫持代码的JavaScript内置函数向浏览器反馈之后,可能会被攻击者执行反劫持操作,即将植入劫持代码的JavaScript内置函数还原为JavaScript内置函数,因此为了避免被攻击,需要检测植入劫持代码的JavaScript内置函数是否已被攻击者还原为JavaScript内置函数。
检测植入劫持代码的JavaScript内置函数是否已被攻击者还原为JavaScript内置函数,可以包括但不局限于:
检测植入劫持代码的JavaScript内置函数的长度是否未超过设定长度,且植入劫持代码的JavaScript内置函数中是否含有[native code]字符串。
若植入劫持代码的JavaScript内置函数的长度未超过设定长度,且植入劫持代码的JavaScript内置函数中含有[native code]字符串字符串,则说明植入劫持代码的JavaScript内置函数已被还原为原生JavaScript函数。
设定长度可以设置为但不局限于:40字节。
步骤S26、对所述植入所述劫持代码的JavaScript内置函数进行劫持,将所述植入所述劫持代码的JavaScript内置函数中的恶意代码删除,并再次植入劫持代码。
步骤S27、按照所述JavaScript内置函数的原生格式,向浏览器反馈再次植入所述劫持代码的JavaScript内置函数。
本实施例中,对所述植入所述劫持代码的JavaScript内置函数进行劫持,将所述植入所述劫持代码的JavaScript内置函数中的恶意代码删除,并再次植入劫持代码,并按照所述JavaScript内置函数的原生格式,向浏览器反馈再次植入所述劫持代码的JavaScript内置函数,实现对攻击者反劫持的操作进行防御,进一步增强防御。
作为本申请另一可选实施例,参照图3,为本申请提供的一种针对跨站脚本攻击的防御方法实施例3的流程图,本实施例主要是对上述实施例1描述的针对跨站脚本攻击的防御方法的扩展方案,如图3所示,该方法可以包括但并不局限于以下步骤:
步骤S31、获取后端需要反馈给浏览器的信息,所述后端需要反馈给浏览器的信息为对所述浏览器中信息进行前端过滤、Nginx过滤及后端过滤后得到的信息;
步骤S32、检测所述后端需要反馈给浏览器的信息中是否存在攻击者劫持JavaScript内置函数的代码;
若存在,则执行步骤S33。
步骤S33、对所述JavaScript内置函数进行劫持,将所述JavaScript内置函数中的恶意代码删除,并植入劫持代码。
步骤S34、按照所述JavaScript内置函数的原生格式,向浏览器反馈植入所述劫持代码的JavaScript内置函数。
步骤S31-S34的详细过程可以参见实施例1中步骤S11-S14的相关介绍,在此不再赘述。
步骤S35、将所述JavaScript内置函数发送至后端数据库,以使所述后端数据库进行存储报警。
在本实施例中,将JavaScript内置函数发送至后端数据库,以使后端数据库进程存储报警,可以实现在不让攻击者警觉的前提下,通过报警机制进行防御。
作为本申请另一可选实施例,参照图4,为本申请提供的一种针对跨站脚本攻击的防御方法实施例4的流程图,本实施例主要是对上述实施例1描述的针对跨站脚本攻击的防御方法的扩展方案,如图4所示,该方法可以包括但并不局限于以下步骤:
步骤S41、获取后端需要反馈给浏览器的信息,所述后端需要反馈给浏览器的信息为对所述浏览器中信息进行前端过滤、Nginx过滤及后端过滤后得到的信息;
步骤S42、检测所述后端需要反馈给浏览器的信息中是否存在攻击者劫持JavaScript内置函数的代码;
若存在,则执行步骤S43。
步骤S43、对所述JavaScript内置函数进行劫持,将所述JavaScript内置函数中的恶意代码删除,并植入劫持代码。
步骤S44、按照所述JavaScript内置函数的原生格式,向浏览器反馈植入所述劫持代码的JavaScript内置函数。
步骤S41-S44的详细过程可以参见实施例1中步骤S11-S14的相关介绍,在此不再赘述。
步骤S45、从所述后端需要反馈给浏览器的信息中获取第三方JS引用url,并将所述第三方JS引用url与预先设定的安全url名单中的url进行枚举正则匹配。
预先设定的安全url名单中的url可以理解为:通过安全验证的,非恶意的url。
第三方JS可以理解为:从外部引用的JS。例如,在网站中需要使用百度的数据统计功能时,网站调用百度的某个JS即第三方JS。
步骤S46、将所述第三方JS引用url中,与所述预先设定的安全url名单中的url不匹配的url,作为异常url。
本实施例中,可以将异常url删除,或者将异常url设置为不可用,以避免网站被攻击。
步骤S47、基于所述第三方JS引用url中,与所述预先设定的安全url名单中的url匹配的url,获取源代码,并判断所述源代码是否为JavaScript代码。
虽然第三方JS引用url中,与预先设定的安全url名单中的url匹配的url,可以认为是安全url,但是,为了保证防御的可靠性,可以进一步基于所述第三方JS引用url中,与所述预先设定的安全url名单中的url匹配的url,获取源代码,并判断源代码是否为JavaScript代码。
若是,则说明源代码为恶意代码,则执行步骤S38。
本实施例中,判断所述源代码是否为JavaScript代码,可以包括但不局限于:
判断所述源代码中是否存在多个不同设定类型的关键字。
设定类型可以根据需要进行设置,在本实施例中不做限制。例如,可以为:function、//、/*、var、let、alert、confirm或prompt。
通过判断源代码中是否存在多个不同设定类型的关键字,可以降低误报的概率,提高判断的准确性。
基于所述第三方JS引用url中,与所述预先设定的安全url名单中的url匹配的url,获取源代码,可以包括:
S471、调用Ajax函数,将所述第三方JS引用url中,与所述预先设定的安全url名单中的url匹配的url作为参数传递给后端接收函数;
S472、所述后端接收函数以代理的方式对接收到的url进行解码,并使用curl访问解码后的url以获取源代码,将所述源代码反馈给所述Ajax函数。
步骤S48、过滤掉所述源代码。
本实施例中,在对原生JavaScript代码进行劫持的同时,进行url的匹配,发现异常url,及过滤源代码,实现从多个方面对跨站脚本攻击进行防御,增强防御。
作为本申请另一可选实施例,参照图5,为本申请提供的一种针对跨站脚本攻击的防御方法实施例5的流程图,本实施例主要是对上述实施例4描述的针对跨站脚本攻击的防御方法的扩展方案,如图5所示,该方法可以包括但并不局限于以下步骤:
步骤S51、获取后端需要反馈给浏览器的信息,所述后端需要反馈给浏览器的信息为对所述浏览器中信息进行前端过滤、Nginx过滤及后端过滤后得到的信息;
步骤S52、检测所述后端需要反馈给浏览器的信息中是否存在攻击者劫持JavaScript内置函数的代码;
若存在,则执行步骤S53。
步骤S53、对所述JavaScript内置函数进行劫持,将所述JavaScript内置函数中的恶意代码删除,并植入劫持代码。
步骤S54、按照所述JavaScript内置函数的原生格式,向浏览器反馈植入所述劫持代码的JavaScript内置函数。
步骤S55、从所述后端需要反馈给浏览器的信息中获取第三方JS引用url,并将所述第三方JS引用url与预先设定的安全url名单中的url进行枚举正则匹配。
步骤S56、将所述第三方JS引用url中,与所述预先设定的安全url名单中的url不匹配的url,作为异常url。
步骤S57、基于所述第三方JS引用url中,与所述预先设定的安全url名单中的url匹配的url,获取源代码,并判断所述源代码是否为JavaScript代码。
若是,则说明源代码为恶意代码,则执行步骤S58。
步骤S58、过滤掉所述源代码。
步骤S51-S58的详细过程可以参见实施例1中步骤S41-S48的相关介绍,在此不再赘述。
步骤S59、将所述异常url及所述源代码发送至后端数据库,以使所述后端数据库进行存储报警。
本实施例中,将所述异常url及所述源代码发送至后端数据库,以使所述后端数据库进行存储报警,可以实现在不让攻击者警觉的前提下,通过报警机制进行防御。
接下来对本申请提供的一种针对跨站脚本攻击的防御装置进行介绍,下文介绍的针对跨站脚本攻击的防御装置与上文介绍的针对跨站脚本攻击的防御方法可相互对应参照。
请参见图6,针对跨站脚本攻击的防御装置包括:第一获取模块100、第一检测模块200、第一劫持模块300和第一反馈模块400。
第一获取模块100,用于获取后端需要反馈给浏览器的信息,所述后端需要反馈给浏览器的信息为对所述浏览器中信息进行前端过滤、Nginx过滤及后端过滤后得到的信息;
第一检测模块200,用于检测所述后端需要反馈给浏览器的信息中是否存在攻击者劫持JavaScript内置函数的代码;
第一劫持模块300,用于若所述后端需要反馈给浏览器的信息中存在攻击者劫持JavaScript内置函数的代码,则对所述JavaScript内置函数进行劫持,将所述JavaScript内置函数中的恶意代码删除,并植入劫持代码;
第一反馈模块400,用于按照所述JavaScript内置函数的原生格式,向浏览器反馈植入所述劫持代码的JavaScript内置函数。
上述针对跨站脚本攻击的防御装置,还可以包括:
第二获取模块,用于获取所述植入所述劫持代码的JavaScript内置函数,并检测所述植入所述劫持代码的JavaScript内置函数是否已被攻击者还原为所述JavaScript内置函数;
第二劫持模块,用于若所述植入所述劫持代码的JavaScript内置函数已被攻击者还原为所述JavaScript内置函数,则对所述植入所述劫持代码的JavaScript内置函数进行劫持,将所述植入所述劫持代码的JavaScript内置函数中的恶意代码删除,并再次植入劫持代码;
第二反馈模块,用于按照所述JavaScript内置函数的原生格式,向浏览器反馈再次植入所述劫持代码的JavaScript内置函数。
本实施例中,上述针对跨站脚本攻击的防御装置,还可以包括:
匹配模块,用于从所述后端需要反馈给浏览器的信息中获取第三方JS引用url,并将所述第三方JS引用url与预先设定的安全url名单中的url进行枚举正则匹配;
第一确定模块,用于将所述第三方JS引用url中,与所述预先设定的安全url名单中的url不匹配的url,作为异常url;
第三获取模块,用于基于所述第三方JS引用url中,与所述预先设定的安全url名单中的url匹配的url,获取源代码;
判断模块,用于判断所述源代码是否为JavaScript代码;
过滤模块,用于若所述源代码为JavaScript代码,则过滤掉所述源代码。
本实施例中,所述判断模块,具体可以用于判断所述源代码中是否存在多个不同设定类型的关键字。
本实施例中,所述第三获取模块,具体可以用于:
调用Ajax函数,将所述第三方JS引用url中,与所述预先设定的安全url名单中的url匹配的url作为参数传递给后端接收函数;
所述后端接收函数以代理的方式对接收到的url进行解码,并使用curl访问解码后的url以获取源代码,将所述源代码反馈给所述Ajax函数。
本实施例中,上述针对跨站脚本攻击的防御装置,还可以包括:
第一存储模块,用于将所述JavaScript内置函数发送至后端数据库,以使所述后端数据库进行存储报警。
本实施例中,上述针对跨站脚本攻击的防御装置,还可以包括:
第二存储模块,用于将所述异常url及所述源代码发送至后端数据库,以使所述后端数据库进行存储报警。
需要说明的是,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。
以上对本申请所提供的一种针对跨站脚本攻击的防御方法及装置进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (8)

1.一种针对跨站脚本攻击的防御方法,其特征在于,包括:
获取后端需要反馈给浏览器的信息,所述后端需要反馈给浏览器的信息为对所述浏览器中信息进行前端过滤、Nginx过滤及后端过滤后得到的信息;
检测所述后端需要反馈给浏览器的信息中是否存在攻击者劫持JavaScript内置函数的代码;
若存在,则对所述JavaScript内置函数进行劫持,将所述JavaScript内置函数中的恶意代码删除,并植入劫持代码;
按照所述JavaScript内置函数的原生格式,向浏览器反馈植入所述劫持代码的JavaScript内置函数;
所述方法还包括:
从所述后端需要反馈给浏览器的信息中获取第三方JS引用url,并将所述第三方JS引用url与预先设定的安全url名单中的url进行枚举正则匹配;
将所述第三方JS引用url中,与所述预先设定的安全url名单中的url不匹配的url,作为异常url;
基于所述第三方JS引用url中,与所述预先设定的安全url名单中的url匹配的url,获取源代码,并判断所述源代码是否为JavaScript代码;
若是,过滤掉所述源代码。
2.根据权利要求1所述的方法,其特征在于,所述按照所述JavaScript内置函数的原生格式,向浏览器反馈植入所述劫持代码的JavaScript内置函数之后,还包括:
获取所述植入所述劫持代码的JavaScript内置函数,并检测所述植入所述劫持代码的JavaScript内置函数是否已被攻击者还原为所述JavaScript内置函数;
若是,则对所述植入所述劫持代码的JavaScript内置函数进行劫持,将所述植入所述劫持代码的JavaScript内置函数中的恶意代码删除,并再次植入劫持代码;
按照所述JavaScript内置函数的原生格式,向浏览器反馈再次植入所述劫持代码的JavaScript内置函数。
3.根据权利要求1所述的方法,其特征在于,所述判断所述源代码是否为JavaScript代码,包括:
判断所述源代码中是否存在多个不同设定类型的关键字。
4.根据权利要求1所述的方法,其特征在于,所述基于所述第三方JS引用url中,与所述预先设定的安全url名单中的url匹配的url,获取源代码,包括:
调用Ajax函数,将所述第三方JS引用url中,与所述预先设定的安全url名单中的url匹配的url作为参数传递给后端接收函数;
所述后端接收函数以代理的方式对接收到的url进行解码,并使用curl访问解码后的url以获取源代码,将所述源代码反馈给所述Ajax函数。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
将所述JavaScript内置函数发送至后端数据库,以使所述后端数据库进行存储报警。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
将所述异常url及所述源代码发送至后端数据库,以使所述后端数据库进行存储报警。
7.一种针对跨站脚本攻击的防御装置,其特征在于,包括:
第一获取模块,用于获取后端需要反馈给浏览器的信息,所述后端需要反馈给浏览器的信息为对所述浏览器中信息进行前端过滤、Nginx过滤及后端过滤后得到的信息;
第一检测模块,用于检测所述后端需要反馈给浏览器的信息中是否存在攻击者劫持JavaScript内置函数的代码;
第一劫持模块,用于若所述后端需要反馈给浏览器的信息中存在攻击者劫持JavaScript内置函数的代码,则对所述JavaScript内置函数进行劫持,将所述JavaScript内置函数中的恶意代码删除,并植入劫持代码;
第一反馈模块,用于按照所述JavaScript内置函数的原生格式,向浏览器反馈植入所述劫持代码的JavaScript内置函数;
所述装置还包括:
匹配模块,用于从所述后端需要反馈给浏览器的信息中获取第三方JS引用url,并将所述第三方JS引用url与预先设定的安全url名单中的url进行枚举正则匹配;
第一确定模块,用于将所述第三方JS引用url中,与所述预先设定的安全url名单中的url不匹配的url,作为异常url;
第三获取模块,用于基于所述第三方JS引用url中,与所述预先设定的安全url名单中的url匹配的url,获取源代码;
判断模块,用于判断所述源代码是否为JavaScript代码;
过滤模块,用于若所述源代码为JavaScript代码,则过滤掉所述源代码。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:
第二获取模块,用于获取所述植入所述劫持代码的JavaScript内置函数,并检测所述植入所述劫持代码的JavaScript内置函数是否已被攻击者还原为所述JavaScript内置函数;
第二劫持模块,用于若所述植入所述劫持代码的JavaScript内置函数已被攻击者还原为所述JavaScript内置函数,则对所述植入所述劫持代码的JavaScript内置函数进行劫持,将所述植入所述劫持代码的JavaScript内置函数中的恶意代码删除,并再次植入劫持代码;
第二反馈模块,用于按照所述JavaScript内置函数的原生格式,向浏览器反馈再次植入所述劫持代码的JavaScript内置函数。
CN202010771254.9A 2020-08-04 2020-08-04 一种针对跨站脚本攻击的防御方法及装置 Active CN111898128B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010771254.9A CN111898128B (zh) 2020-08-04 2020-08-04 一种针对跨站脚本攻击的防御方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010771254.9A CN111898128B (zh) 2020-08-04 2020-08-04 一种针对跨站脚本攻击的防御方法及装置

Publications (2)

Publication Number Publication Date
CN111898128A CN111898128A (zh) 2020-11-06
CN111898128B true CN111898128B (zh) 2024-04-26

Family

ID=73184076

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010771254.9A Active CN111898128B (zh) 2020-08-04 2020-08-04 一种针对跨站脚本攻击的防御方法及装置

Country Status (1)

Country Link
CN (1) CN111898128B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114363022B (zh) * 2021-12-22 2024-05-24 西安四叶草信息技术有限公司 攻击溯源方法、装置、电子设备及存储介质

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101620620A (zh) * 2009-08-06 2010-01-06 成都市华为赛门铁克科技有限公司 分析网页方法和装置
CN102469113A (zh) * 2010-11-01 2012-05-23 北京启明星辰信息技术股份有限公司 一种安全网关及其转发网页的方法
CN103699840A (zh) * 2013-12-12 2014-04-02 北京奇虎科技有限公司 网页劫持的检测方法和装置
CN103856471A (zh) * 2012-12-06 2014-06-11 阿里巴巴集团控股有限公司 跨站脚本攻击监控系统及方法
CN104486140A (zh) * 2014-11-28 2015-04-01 华北电力大学 一种检测网页被劫持的装置及其检测方法
CN105488398A (zh) * 2015-12-04 2016-04-13 北京航空航天大学 Web应用程序行为提取方法和恶意行为检测方法
CN107124430A (zh) * 2017-06-08 2017-09-01 腾讯科技(深圳)有限公司 页面劫持监控方法、装置、系统和存储介质
CN108366058A (zh) * 2018-02-07 2018-08-03 平安普惠企业管理有限公司 防止广告运营商流量劫持的方法、装置、设备及存储介质
CN108989266A (zh) * 2017-05-31 2018-12-11 腾讯科技(深圳)有限公司 一种防止网页劫持的处理方法和客户端以及服务器
CN109688130A (zh) * 2018-12-24 2019-04-26 北京奇虎科技有限公司 网页劫持检测方法、装置及计算机存储介质

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070113282A1 (en) * 2005-11-17 2007-05-17 Ross Robert F Systems and methods for detecting and disabling malicious script code
US20140380477A1 (en) * 2011-12-30 2014-12-25 Beijing Qihoo Technology Company Limited Methods and devices for identifying tampered webpage and inentifying hijacked web address

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101620620A (zh) * 2009-08-06 2010-01-06 成都市华为赛门铁克科技有限公司 分析网页方法和装置
CN102469113A (zh) * 2010-11-01 2012-05-23 北京启明星辰信息技术股份有限公司 一种安全网关及其转发网页的方法
CN103856471A (zh) * 2012-12-06 2014-06-11 阿里巴巴集团控股有限公司 跨站脚本攻击监控系统及方法
CN103699840A (zh) * 2013-12-12 2014-04-02 北京奇虎科技有限公司 网页劫持的检测方法和装置
CN104486140A (zh) * 2014-11-28 2015-04-01 华北电力大学 一种检测网页被劫持的装置及其检测方法
CN105488398A (zh) * 2015-12-04 2016-04-13 北京航空航天大学 Web应用程序行为提取方法和恶意行为检测方法
CN108989266A (zh) * 2017-05-31 2018-12-11 腾讯科技(深圳)有限公司 一种防止网页劫持的处理方法和客户端以及服务器
CN107124430A (zh) * 2017-06-08 2017-09-01 腾讯科技(深圳)有限公司 页面劫持监控方法、装置、系统和存储介质
CN108366058A (zh) * 2018-02-07 2018-08-03 平安普惠企业管理有限公司 防止广告运营商流量劫持的方法、装置、设备及存储介质
CN109688130A (zh) * 2018-12-24 2019-04-26 北京奇虎科技有限公司 网页劫持检测方法、装置及计算机存储介质

Also Published As

Publication number Publication date
CN111898128A (zh) 2020-11-06

Similar Documents

Publication Publication Date Title
US8776224B2 (en) Method and apparatus for identifying phishing websites in network traffic using generated regular expressions
CN104601540B (zh) 一种跨站脚本XSS攻击防御方法及Web服务器
CN102945348B (zh) 文件信息收集方法与装置
US8959624B2 (en) Executable download tracking system
US9088602B2 (en) Method and arrangement for detecting fraud in telecommunication networks
CN102945349B (zh) 未知文件处理方法与装置
CN103428186A (zh) 一种检测钓鱼网站的方法及装置
CN103888480B (zh) 基于云监测的网络信息安全性鉴定方法及云端设备
CN111898128B (zh) 一种针对跨站脚本攻击的防御方法及装置
CN109474601B (zh) 一种基于行为识别的扫描类攻击处置方法
CN105743869A (zh) Csrf攻击防范方法、网站服务器及浏览器
CN107770125A (zh) 一种网络安全应急响应方法及应急响应平台
CN105391860A (zh) 用于处理通信请求的方法和装置
US10333974B2 (en) Automated processing of suspicious emails submitted for review
CN112187806A (zh) 一种基于网页资源地址动态跳变的防御方法
US10110628B2 (en) Phishing source tool
CN111371750A (zh) 一种基于计算机网络入侵防御系统及入侵防御方法
CN114301696B (zh) 恶意域名检测方法、装置、计算机设备及存储介质
CN115878932A (zh) 一种网站安全事件的处理方法、装置、设备及介质
CN113660266A (zh) 登录失败的处理方法、装置、设备及存储介质
CN112508569B (zh) 支付环境监控方法及系统
CN106713285A (zh) 网站链接安全性验证方法和系统
US9390133B2 (en) Method and system for regulating entry of data into a protected system
CN111191234A (zh) 一种病毒信息检测的方法及装置
KR102521677B1 (ko) 피싱 피해 모니터링 시스템 및 그 방법

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant