CN111049795B - 分布式Web应用的敏感数据未加密漏洞的检测方法及装置 - Google Patents
分布式Web应用的敏感数据未加密漏洞的检测方法及装置 Download PDFInfo
- Publication number
- CN111049795B CN111049795B CN201911024060.6A CN201911024060A CN111049795B CN 111049795 B CN111049795 B CN 111049795B CN 201911024060 A CN201911024060 A CN 201911024060A CN 111049795 B CN111049795 B CN 111049795B
- Authority
- CN
- China
- Prior art keywords
- request
- data
- end application
- keyword
- unencrypted
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1408—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
- H04L63/1416—Event detection, e.g. attack signature detection
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1433—Vulnerability analysis
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提出一种分布式Web应用的敏感数据未加密漏洞的检测方法及装置,其中方法包括:响应于用户向前端应用发送的访问请求时,调用运行在前端应用上的第一代理程序获取访问请求的第一请求数据;获取响应访问请求的调用链路的链路标识,并在待发送给每个目标后端应用的调用请求中添加链路标识;响应于向每个目标后端应用发送包括链路标识的调用请求,调用运行在每个目标后端应用的上第二代理程序获取调用请求的第二请求数据;建立并存储链路标识与第一请求数据、各个第二请求数据的对应关系,以便根据对应关系获取与链路标识对应的第一请求数据、各个第二请求数据进行敏感数据未加密漏洞检测,实现自动地、无入侵式地动态检测漏洞,检测效率高。
Description
技术领域
本发明涉及互联网技术领域,尤其涉及一种分布式Web应用的敏感数据未加密漏洞的检测方法及装置。
背景技术
随着分布式Web(World Wide Web,万维网)应用以及微服务技术的普及,越来越多的安全问题被暴露出来,Web应用对用户登录认证信息未进行加密,应用组件间敏感信息以明文形式传送,这些未加密的数据非常容易在传输过程中被获取利用,尽管HTTPS(HyperText Transfer Protocol over Secure Socket Layer,超文本传输安全协议)实现了安全数据传输的协议,但随着技术的发展,HTTPS也不再是绝对的安全,因此,一种检测分布式Web应用的敏感数据未加密漏洞的方法成为亟待解决的技术问题。
发明内容
本发明旨在至少在一定程度上解决相关技术中的技术问题之一。
为此,本发明的第一个目的在于提出一种分布式Web应用的敏感数据未加密漏洞的检测方法。
本发明的第二个目的在于提出一种分布式Web应用的敏感数据未加密漏洞的检测装置。
本发明的第三个目的在于提出另一种分布式Web应用的敏感数据未加密漏洞的检测装置。
本发明的第四个目的在于提出一种计算机可读存储介质。
为达上述目的,本发明第一方面实施例提出了一种分布式Web应用的敏感数据未加密漏洞的检测方法,所述分布式Web应用包括前端应用、至少一个后端应用,所述方法包括:
响应于用户向所述前端应用发送的访问请求时,调用运行在前端应用上的第一代理程序获取所述访问请求的第一请求数据;
获取响应所述访问请求的调用链路的链路标识,并在待发送给每个目标后端应用的调用请求中添加所述链路标识,所述调用链路包括所述前端应用、至少一个目标后端应用,所述目标后端应用为所述至少一个后端应用中的任一个;
响应于向每个目标后端应用发送包括所述链路标识的调用请求,调用运行在每个目标后端应用的上第二代理程序获取所述调用请求的第二请求数据;
建立并存储链路标识与第一请求数据、各个第二请求数据的对应关系,以便根据所述对应关系获取与链路标识对应的第一请求数据、各个第二请求数据进行敏感数据未加密漏洞检测。
作为一种可能的实现方式,所述方法还包括:
控制所述前端应用对应的服务器在启动命令中添加与所述第一代理程序匹配的命令,以在所述前端应用上运行第一代理程序;
控制每个后端应用对应的服务器在启动命令中添加与对应的第二代理程序匹配的命令,以在所述后端应用上运行对应的第二代理程序。
作为一种可能的实现方式,所述调用运行在前端应用上的第一代理程序获取所述访问请求的第一请求数据包括:
调用运行在所述前端应用上的第一代理程序的第一关键函数获取所述访问请求中请求头数据、表征提交表单传递参数的数据;
调用运行在所述前端应用上的第一代理程序的所述第二关键函数获取所述访问请求中请求体内容数据;
其中,所述第一关键函数用于获取所述访问请求中请求头数据、表征提交表单传递参数的数据,所述请求头数据包括表征发送数据流的类型的数据;所述第二关键函数用于获取所述访问请求中请求体内容数据。
作为一种可能的实现方式,所述在待发送给每个目标后端应用的调用请求中添加所述链路标识,包括:
调用待发送给每个目标后端应用的调用请求的目标应用上的代理程序的第三关键函数,在待发送给每个目标后端应用的调用请求中添加所述链路标识,其中所述第三关键函数用于在待发送给每个目标后端应用的调用请求中添加所述链路标识。
作为一种可能的实现方式,所述调用运行在每个目标后端应用的上第二代理程序获取所述调用请求的第二请求数据,包括:
调用运行在每个目标后端应用上的第二代理程序的第四关键函数获取所述调用请求中请求头数据、表征提交表单传递参数的数据;
调用运行在每个目标后端应用上的第二代理程序的所述第五关键函数获取所述调用请求中请求体内容数据;
其中,所述第四关键函数用于获取所述访问请求中请求头数据、表征提交表单传递参数的数据,所述请求头数据包括表征发送数据流的类型的数据;所述第五关键函数用于获取所述访问请求中请求体内容数据。
作为一种可能的实现方式,在建立并存储链路标识与第一请求数据、各个第二请求数据的对应关系之后,还包括:
获取与链路标识对应的第一请求数据、各个第二请求数据;
对所述第一请求数据进行解析,获取所述第一请求数据的第一关键字和与所述第一关键字对应的值,以及对每个第二请求数据进行解析,获取每个第二请求数据的第二关键字和与第二关键字对应的值;
在所述第一关键字包含预设敏感关键字时,根据预设策略和与所述第一关键字对应的值确定所述第一请求数据是否为未加密的敏感数据;
在每个第二关键字是否包含预设敏感关键字时,根据预设策略和与第二关键字对应的值确定对应的所述第二请求数据是否为未加密的敏感数据。
作为一种可能的实现方式,所述根据预设策略和与所述第一关键字对应的值确定所述第一请求数据是否为未加密的敏感数据包括:
若所述预设敏感关键字表征密码信息,则判断与所述第一关键字对应的值是否包括大小写、数字、符号,若判断结果为是,则确定所述第一请求数据是否为未加密的敏感数据;
若所述预设敏感关键字表征手机号码,则利用手机号码正则表达式对与所述第一关键字对应的值进行匹配,若匹配成功,则确定所述第一请求数据为未加密的敏感数据;
若所述预设敏感关键字表征身份证号码,则利用身份证号码正则表达式对与所述第一关键字对应的值进行匹配,若匹配成功,则确定所述第一请求数据为未加密的敏感数据;
若所述预设敏感关键字表征银行卡号,则利用银行卡号正则表达式对与所述第一关键字对应的值进行匹配,若匹配成功,则确定所述第一请求数据为未加密的敏感数据。
作为一种可能的实现方式,所述根据预设策略和与所述第二关键字对应的值确定对应的所述第二请求数据是否为未加密的敏感数据包括:
若所述预设敏感关键字表征密码信息,则判断与所述第二关键字对应的值是否包括大小写、数字、符号,若判断结果为是,则确定对应的所述第二请求数据是否为未加密的敏感数据;
若所述预设敏感关键字表征手机号码,则利用手机号码正则表达式对与所述第二关键字对应的值进行匹配,若匹配成功,则确定对应的所述第二一请求数据为未加密的敏感数据;
若所述预设敏感关键字表征身份证号码,则利用身份证号码正则表达式对与所述第二关键字对应的值进行匹配,若匹配成功,则确定对应的所述第二请求数据为未加密的敏感数据;
若所述预设敏感关键字表征银行卡号,则利用银行卡号正则表达式对与所述第二关键字对应的值进行匹配,若匹配成功,则确定对应的所述第二请求数据为未加密的敏感数据。
本发明实施例的分布式Web应用的敏感数据未加密漏洞的检测方法,所述分布式Web应用包括前端应用、至少一个后端应用,响应于用户向所述前端应用发送的访问请求时,调用运行在前端应用上的第一代理程序获取所述访问请求的第一请求数据;获取响应所述访问请求的调用链路的链路标识,并在待发送给每个目标后端应用的调用请求中添加所述链路标识,所述调用链路包括所述前端应用、至少一个目标后端应用,所述目标后端应用为所述至少一个后端应用中的任一个;响应于向每个目标后端应用发送包括所述链路标识的调用请求,调用运行在每个目标后端应用的上第二代理程序获取所述调用请求的第二请求数据;建立并存储链路标识与第一请求数据、各个第二请求数据的对应关系,以便根据所述对应关系获取与链路标识对应的第一请求数据、各个第二请求数据进行敏感数据未加密漏洞检测。由此,通过在分布式Web应用上运行的代理程序便可获取向前端应用发送的访问请求的请求数据以及向后端应用发送的调用请求的请求数据,并对所获取的请求数据进行敏感数据未加密漏洞检测;实现自动地、无入侵式地动态检测分布式Web应用的敏感数据未加密漏洞;不仅可以检测用户与前端应用交互时的敏感数据未加密漏洞,也可以检测前端应用与后端应用交互时的敏感数据未加密漏洞;还能够在应用功能测试时同时完成漏洞检测,无需专业的安全测试人员,节省人力物力,提高了检测效率。
为达上述目的,本发明第二方面实施例提出了一种分布式Web应用的敏感数据未加密漏洞的检测装置,所述分布式Web应用包括前端应用、至少一个后端应用,所述装置包括:
第一调用模块,用于响应于用户向所述前端应用发送的访问请求时,调用运行在前端应用上的第一代理程序获取所述访问请求的第一请求数据;
添加模块,用于获取响应所述访问请求的调用链路的链路标识,并在待发送给每个目标后端应用的调用请求中添加所述链路标识,所述调用链路包括所述前端应用、至少一个目标后端应用,所述目标后端应用为所述至少一个后端应用中的任一个;
第二调用模块,用于响应于向每个目标后端应用发送包括所述链路标识的调用请求,调用运行在每个目标后端应用的上第二代理程序获取所述调用请求的第二请求数据;
建立模块,用于建立并存储链路标识与第一请求数据、各个第二请求数据的对应关系,以便根据所述对应关系获取与链路标识对应的第一请求数据、各个第二请求数据进行敏感数据未加密漏洞检测。
作为一种可能的实现方式,所述装置还包括:
处理模块,用于控制所述前端应用对应的服务器在启动命令中添加与所述第一代理程序匹配的命令,以在所述前端应用上运行第一代理程序;
所述处理模块,用于控制每个后端应用对应的服务器在启动命令中添加与对应的第二代理程序匹配的命令,以在所述后端应用上运行对应的第二代理程序。
作为一种可能的实现方式,所述第一调用模块具体用于:
调用运行在所述前端应用上的第一代理程序的第一关键函数获取所述访问请求中请求头数据、表征提交表单传递参数的数据;
调用运行在所述前端应用上的第一代理程序的所述第二关键函数获取所述访问请求中请求体内容数据;
其中,所述第一关键函数用于获取所述访问请求中请求头数据、表征提交表单传递参数的数据,所述请求头数据包括表征发送数据流的类型的数据;所述第二关键函数用于获取所述访问请求中请求体内容数据。
作为一种可能的实现方式,所述添加模块具体用于:
调用待发送给每个目标后端应用的调用请求的目标应用上的代理程序的第三关键函数,在待发送给每个目标后端应用的调用请求中添加所述链路标识,其中所述第三关键函数用于在待发送给每个目标后端应用的调用请求中添加所述链路标识。
作为一种可能的实现方式,所述第二调用模块具体用于:
调用运行在每个目标后端应用上的第二代理程序的第四关键函数获取所述调用请求中请求头数据、表征提交表单传递参数的数据;
调用运行在每个目标后端应用上的第二代理程序的所述第五关键函数获取所述调用请求中请求体内容数据;
其中,所述第四关键函数用于获取所述访问请求中请求头数据、表征提交表单传递参数的数据,所述请求头数据包括表征发送数据流的类型的数据;所述第五关键函数用于获取所述访问请求中请求体内容数据。
作为一种可能的实现方式,所述装置还包括:
获取模块,用于获取与链路标识对应的第一请求数据、各个第二请求数据;
解析模块,用于对所述第一请求数据进行解析,获取所述第一请求数据的第一关键字和与所述第一关键字对应的值,以及对每个第二请求数据进行解析,获取每个第二请求数据的第二关键字和与第二关键字对应的值;
分析模块,用于在所述第一关键字是否包含预设敏感关键字时,根据预设策略和与所述第一关键字对应的值确定所述第一请求数据是否为未加密的敏感数据;
所述分析模块,还用于在每个第二关键字是否包含预设敏感关键字时,根据预设策略和与第二关键字对应的值确定对应的所述第二请求数据是否为未加密的敏感数据。
作为一种可能的实现方式,所述分析模块具体用于:
若所述预设敏感关键字表征密码信息,则判断与所述第一关键字对应的值是否包括大小写、数字、符号,若判断结果为是,则确定所述第一请求数据是否为未加密的敏感数据;
若所述预设敏感关键字表征手机号码,则利用手机号码正则表达式对与所述第一关键字对应的值进行匹配,若匹配成功,则确定所述第一请求数据为未加密的敏感数据;
若所述预设敏感关键字表征身份证号码,则利用身份证号码正则表达式对与所述第一关键字对应的值进行匹配,若匹配成功,则确定所述第一请求数据为未加密的敏感数据;
若所述预设敏感关键字表征银行卡号,则利用银行卡号正则表达式对与所述第一关键字对应的值进行匹配,若匹配成功,则确定所述第一请求数据为未加密的敏感数据。
作为一种可能的实现方式,所述分析模块还具体用于:
若所述预设敏感关键字表征密码信息,则判断与所述第二关键字对应的值是否包括大小写、数字、符号,若判断结果为是,则确定对应的所述第二请求数据是否为未加密的敏感数据;
若所述预设敏感关键字表征手机号码,则利用手机号码正则表达式对与所述第二关键字对应的值进行匹配,若匹配成功,则确定对应的所述第二一请求数据为未加密的敏感数据;
若所述预设敏感关键字表征身份证号码,则利用身份证号码正则表达式对与所述第二关键字对应的值进行匹配,若匹配成功,则确定对应的所述第二请求数据为未加密的敏感数据;
若所述预设敏感关键字表征银行卡号,则利用银行卡号正则表达式对与所述第二关键字对应的值进行匹配,若匹配成功,则确定对应的所述第二请求数据为未加密的敏感数据。
本发明实施例的分布式Web应用的敏感数据未加密漏洞的检测装置,所述分布式Web应用包括前端应用、至少一个后端应用,响应于用户向所述前端应用发送的访问请求时,调用运行在前端应用上的第一代理程序获取所述访问请求的第一请求数据;获取响应所述访问请求的调用链路的链路标识,并在待发送给每个目标后端应用的调用请求中添加所述链路标识,所述调用链路包括所述前端应用、至少一个目标后端应用,所述目标后端应用为所述至少一个后端应用中的任一个;响应于向每个目标后端应用发送包括所述链路标识的调用请求,调用运行在每个目标后端应用的上第二代理程序获取所述调用请求的第二请求数据;建立并存储链路标识与第一请求数据、各个第二请求数据的对应关系,以便根据所述对应关系获取与链路标识对应的第一请求数据、各个第二请求数据进行敏感数据未加密漏洞检测。由此,通过在分布式Web应用上运行的代理程序便可获取向前端应用发送的访问请求的请求数据以及向后端应用发送的调用请求的请求数据,并对所获取的请求数据进行敏感数据未加密漏洞检测;实现自动地、无入侵式地动态检测分布式Web应用的敏感数据未加密漏洞;不仅可以检测用户与前端应用交互时的敏感数据未加密漏洞,也可以检测前端应用与后端应用交互时的敏感数据未加密漏洞;还能够在应用功能测试时同时完成漏洞检测,无需专业的安全测试人员,节省人力物力,提高了检测效率。
为达上述目的,本发明第三方面实施例提出了另一种分布式Web应用的敏感数据未加密漏洞的检测装置,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上所述的分布式Web应用的敏感数据未加密漏洞的检测方法。
为了实现上述目的,本发明第四方面实施例提出了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上所述的分布式Web应用的敏感数据未加密漏洞的检测方法。
本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为本发明实施例提供的一种分布式Web应用的敏感数据未加密漏洞的检测方法的流程示意图;
图2为示例性的分布式Web应用;
图3为示例性的数据库;
图4为本发明实施例提供的又一种分布式Web应用的敏感数据未加密漏洞的检测方法的流程示意图;
图5为本发明实施例提供的一种分布式Web应用的敏感数据未加密漏洞的检测装置的结构示意图;
图6为本发明实施例提供的又一种分布式Web应用的敏感数据未加密漏洞的检测装置的结构示意图;
图7为本发明实施例提供的另一种分布式Web应用的敏感数据未加密漏洞的检测装置的结构示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
下面参考附图描述本发明实施例的分布式Web应用的敏感数据未加密漏洞的检测方法及装置。
目前,由于数据的特殊性,账号、密码、身份证号、手机号等敏感数据经常在Web应用的各个组件中频繁传输,如果在传输过程中被中间人截取,中间人就可以通过不同的方式利用截取到的数据,会造成严重的后果。由于这些敏感数据的重要性,加密传输可以说是至关重要。
越来越多的Web应用采用了分布式部署和微服务的技术,一个系统可能包括诸如前端应用和后端应用等多个应用,但只有一个前端应用是与用户交互的,后端应用只是为前端应用提供服务和数据接口,不同应用之间通过HTTP((HyperText Transfer Protocol,超文本传输协议))或HTTPS请求传输数据,所以敏感数据不仅存在用户与应用交互的过程中,还存在应用与应用之间的数据传输中,对这些敏感数据,必须对其加密传输才能保证应用的安全性、可靠性。
通常,敏感数据检测主要有以下三种方式:
第一种:开发人员自检。该方式存在如下缺点:主要依赖于企业编码规约,更多的还取决于开发者本身,对于敏感数据,需要强制其进行加密,不能只依赖开发人员主观的意识,还要有严格的审查流程,人工成本高,检测效率低,若开发人员的经验不足,误检率较高。
第二种:人工代码审计。该方式存在如下缺点:人工代码审计耗费人力物力,对于大型工程,无法做到面面俱到。
第三种:黑盒测试阶段抓请求数据包分析。该方式存在如下缺点:黑盒测试是在不清楚软件内部实现逻辑的情况下进行测试,测试人员只能依靠系统输入输出才能判断系统是否有敏感数据未加密漏洞,此输入输出也只是测试人员与前端应用之间的输入输出数据,在访问前端应用时,前端应用调用后端应用传输的数据测试人员是不知道的,所以应用与应用之间传输的数据很容易被忽略。且应用组件之间传输的数据往往是被黑盒测试人员忽视掉的,由于敏感数据出现在应用的各个维度,对于大型项目,全部分析到可能是困难的。
为了解决上述问题,本发明提出了一种分布式Web应用的敏感数据未加密漏洞的检测方法,实现自动地、无入侵式地动态检测分布式Web应用的敏感数据未加密漏洞,不仅可以检测用户与前端应用交互时的敏感数据未加密漏洞,也可以检测前端应用与后端应用交互时的敏感数据未加密漏洞,还能够在应用功能测试时同时完成漏洞检测,无需专业的安全测试人员,节省人力物力,提高了检测效率。
为了更加全面的描述本发明实施例的分布式Web应用的敏感数据未加密漏洞的检测方法,下面结合附图1,详细说明本发明实施例的分布式Web应用的敏感数据未加密漏洞的检测方法。
图1为本发明实施例提供的一种分布式Web应用的敏感数据未加密漏洞的检测方法的流程示意图。本发明实施例提供的分布式Web应用的敏感数据未加密漏洞的检测方法的执行主体为分布式Web应用的敏感数据未加密漏洞的检测装置,分布式Web应用的敏感数据未加密漏洞的检测装置具体可以为硬件设备,或者硬件设备中安装的软件。其中,硬件设备例如可以为终端设备、服务器等。
如图1所示,该分布式Web应用的敏感数据未加密漏洞的检测方法包括以下步骤:
S101、响应于用户向所述前端应用发送的访问请求时,调用运行在前端应用上的第一代理程序获取所述访问请求的第一请求数据。
本实施例中,在接收到用户向前端应用发送的访问请求时,调用运行在前端应用上的第一代理程序获取访问请求的第一请求数据。
具体的,分布式Web应用包括前端应用、至少一个后端应用。在实际情形中,用户通过前端应用发起访问请求,响应访问请求的调用链路可能包括前端应用、至少一个目标后端应用,目标后端应用为至少一个后端应用中的任一个。其中,前端应用可能需要调用一个或多个目标后端应用的服务,目标后端应用也可能需要调用其他的一个或多个目标后端应用的服务。
图2为示例性的分布式Web应用。以图2为例,一个系统包含三个应用A、B、C,三个应用分别部署在不同的机器上。其中,应用A:抵押借贷应用(前端应用,用户仅能与该应用交互),应用B:信用服务应用(微服务应用),应用C:固定资产服务应用(微服务应用)。
用户a想要通过应用A查询自己可贷款的额度时,在应用A提供的页面上填写表单提交后,应用A会去调用应用B查询用户a的信用信息,同时也会调用应用C查询用户a的固定资产情况,A将查询出来的数据做计算,最后计算出具体能借贷给用户a的额度并返回显示页面。在a->A访问请求中以及A->B调用请求、A->C调用请求中都可能传输用户a的敏感数据如身份证号、手机号、密码、银行账号等等。
需要指出的是,在A->B调用请求和A->C调用请求均为请求头header中带唯一标识的http请求,其中,请求头header中所带唯一标识用于标识调用请求所归属的调用链路。
具体的,为了实现无入侵式检测动态检测分布式Web应用的敏感数据未加密漏洞,预先在分布式Web应用中的前端应用上运行第一代理程序,在每个后端应用上运行相应的第二代理程序,通过代理程序agent实现无入侵式检测动态检测分布式Web应用的敏感数据未加密漏洞。
继续以图2为例,在应用A、应用B、应用C中都运行了代理程序agent。
进一步的,在步骤S101之前,所述方法还包括以下步骤:控制所述前端应用对应的服务器在启动命令中添加与所述第一代理程序匹配的命令,以在所述前端应用上运行第一代理程序;控制每个后端应用对应的服务器在启动命令中添加与对应的第二代理程序匹配的命令,以在所述后端应用上运行对应的第二代理程序。
具体的,第一代理程序、第二代理程序均为根据应用的实际情形进行设定的JavaAgent。JavaAgent是JDK1.5以后引入的,也可以叫做Java代理,本质上是一个jar包,只是启动方式和普通jar包有所不同,对于普通的Jar包,通过指定类的main函数进行启动,但是JavaAgent并不能单独启动,必须依附在一个Java应用程序运行,JavaAgent主要有2个强大的功能,它可以在加载java文件之前做拦截把字节码做修改,也可以在运行期将已经加载的类的字节码做变更。JavaAgent可以无侵入式部署,只需要在Web应用服务器如tomcat、jetty启动命令行中添加”-JavaAgentt”命令即可将JavaAgent程序依附在将要启动的应用上,如应用为分布式应用,则需要在每个节点都进行部署JavaAgent。
在不同的应用场景中,调用第一代理程序获取访问请求的第一请求数据的方式不同。
由于JavaAgent程序可以在加载java文件之前做拦截把字节码做修改,也可以在运行期将已经加载的类的字节码做变更。基于该特性,编写JavaAgent的关键函数来拦截分布式Web应用。
JAVA Web应用都是基于Servlet规范开发,不同的应用框架都各自实现了HttpServlet子类的service()方法,service()方法是执行实际任务的主要方法,Servlet容器(即Web服务器)调用service()方法来处理来自客户端(浏览器)的请求,并把格式化的响应写回给客户端。
HTTP协议可能是现在Internet上使用得最多、最重要的协议了越来越多的Java应用程序需要直接通过HTTP协议来访问网络资源。虽然在JDK的java net包中已经提供了访问HTTP协议的基本功能,但是对于大部分应用程序来说,JDK库本身提供的功能还不够丰富和灵活。HttpClient是Apache Jakarta Common下的子项目,用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包,并且它支持HTTP协议最新的版本和建议。
以下对几种JavaAgent拦截分布式Web应用的关键函数进行简单说明:
第一种关键函数为:javax.servlet.http.HttpServlet子类的service()方法。
该关键函数主要获取请求数据包中的数据,包括header请求头、content-type、提交表单传递的参数等信息,请求数据包例如为HttpServletRequest请求数据包。
第二种关键函数为:javax.servlet.http.HttpServletRequest的getInputStream()方法,getInputStream()方法可以获取一个输入流。
该关键函数主要是获取请求数据包中的body请求体数据,很多应用通过json传递参数,json都是存在于请求数据包的body请求体中。
第三种关键函数为:org.apache.http.client.HttpClient子类的execute方法,其中,调用executet()发送请求访问其他服务。
第四种关键函数为:org.apache.commons.httpclient.HttpClient子类的executeMethod方法,其与第三种函数具有相同功能,为其历史版本,其中,调用executeMethod发送请求访问其他服务。
拦截第三种关键函数和第四种关键函数均可以用来在发送的请求的请求头中加入一个标识作为此次调用链路的唯一key。
作为一种示例,编写第一代理程序的关键函数,通过其关键函数来获取访问请求的第一请求数据。
具体的,步骤S101的实现方式为:调用运行在所述前端应用上的第一代理程序的第一关键函数获取所述访问请求中请求头数据、表征提交表单传递参数的数据;调用运行在所述前端应用上的第一代理程序的所述第二关键函数获取所述访问请求中请求体内容数据。
其中,所述第一关键函数用于获取所述访问请求中请求头数据、表征提交表单传递参数的数据,所述请求头数据包括表征发送数据流的类型的数据;所述第二关键函数用于获取所述访问请求中请求体内容数据。
例如,第一关键函数为根据实际情形编写的javax.servlet.http.HttpServlet子类的service(HttpServletRequest request,HttpServletResponse reponse)方法。
第二关键函数为根据事先情形编写的javax.servlet.http.HttpServletRequest的getInputStream()方法。
S102、获取响应所述访问请求的调用链路的链路标识,并在待发送给每个目标后端应用的调用请求中添加所述链路标识,所述调用链路包括所述前端应用、至少一个目标后端应用,所述目标后端应用为所述至少一个后端应用中的任一个。
在实际情形中,调用链路中的目标后端应用可能被前端应用调用,也可能调用其他的目标后端应用。因此,为了便于辨识调用请求所归属的调用链路,无论是前端应用向后端应用发起的调用请求还是后端应用之间的调用请求,都在调用请求中加入链路标识。具体的,获取响应所述访问请求的调用链路的链路标识,并在待发送给每个目标后端应用的调用请求中添加所述链路标识。其中,该链路标识能够标识归属于同一访问请求的调用链路。链路标识可以为随机生成的唯一随机码,但并不以此为限。以图2为例,在A->B调用请求和A->C调用请求的请求头header中所带唯一标识为对应的链路标识。
例如,用户访问前端应用的访问请求,前端应用可能调用一个或多个目标后端应用的调用请求、目标后端应用可能调用另一目标后端应用;由用户访问前端应用的访问请求、前端应用可调用一个或多个目标后端应用的调用请求、目标后端应用之间的调用请求连接在一起形成对应的调用链路,获取一个随机生成的唯一随机码来表征调用链路,该唯一随机码作为调用链路的链路标识。
在不同的应用场景中,在待发送给每个目标后端应用的调用请求中添加所述链路标识的实现方式不限。
作为一种示例,“在待发送给每个目标后端应用的调用请求中添加所述链路标识”的具体方式为:调用待发送给每个目标后端应用的调用请求的目标应用上的代理程序的第三关键函数,在待发送给每个目标后端应用的调用请求中添加所述链路标识,其中所述第三关键函数用于在待发送给每个目标后端应用的调用请求中添加所述链路标识。
例如,第三关键函数为根据实际情形编写的org.apache.http.client.HttpClient子类的execute方法或者根据实际情形编写的org.apache.commons.httpclient.HttpClient子类的executeMethod方法,但并不以此为限。
本实施例中,若目标应用为前端应用,采用前端应用上的第三关键函数向发送给对应的目标后端应用的调用请求中添加链路标识。若目标应用为一个目标后端应用,则通过该目标后端应用上的第三关键函数向发送给对应的其他目标后端应用的调用请求中添加链路标识。
S103、响应于向每个目标后端应用发送包括所述链路标识的调用请求,调用运行在每个目标后端应用的上第二代理程序获取所述调用请求的第二请求数据。
具体的,预先在每个目标后端应用中预先相应的第二代理程序,在接收到向每个目标后端应用发送包括链路标识的调用请求时,调用运行在每个目标后端应用的上第二代理程序获取所述调用请求的第二请求数据。
在不同的应用场景中,调用第二代理程序获取调用请求的第二请求数据的方式不同。
作为一种示例,“调用运行在每个目标后端应用的上第二代理程序获取所述调用请求的第二请求数据”的实现方式为:调用运行在每个目标后端应用上的第二代理程序的第四关键函数获取所述调用请求中请求头数据、表征提交表单传递参数的数据;调用运行在每个目标后端应用上的第二代理程序的所述第五关键函数获取所述调用请求中请求体内容数据。
其中,所述第四关键函数用于获取所述访问请求中请求头数据、表征提交表单传递参数的数据,所述请求头数据包括表征发送数据流的类型的数据;所述第五关键函数用于获取所述访问请求中请求体内容数据。
例如,第四关键函数为根据实际情形编写的javax.servlet.http.HttpServlet子类的service(HttpServletRequest request,HttpServletResponse reponse)方法。第五关键函数为根据事先情形编写的javax.servlet.http.HttpServletRequest的getInputStream()方法,但并不限于举例说明。
S104、建立并存储链路标识与第一请求数据、各个第二请求数据的对应关系,以便根据所述对应关系获取与链路标识对应的第一请求数据、各个第二请求数据进行敏感数据未加密漏洞检测。
可以理解的是,预先存储链路标识与第一请求数据、各个第二请求数据的对应关系,从而在数据分析阶段,可以基于对应关系获取与链路标识对应的第一请求数据、各个第二请求数据进行敏感数据未加密漏洞检测。
作为一种示例,可以在高性能的key-value键值数据库Redis,以键值对的形式存储链路标识与第一请求数据、各个第二请求数据的对应关系。其中,链路标识为键key,对应的第一请求数据、各个第二请求数据为值value。例如,在数据库中关联存储了以下信息:链路标识1及其对应的第一请求数据、各个第二请求数据、链路标识2及其对应的第一请求数据、各个第二请求数据等等。
图3为示例性的数据库。以图3为例,唯一标识1、唯一标识2……唯一标识n均对应一个链路标识,在数据库中,存储了每个链路标识对应的请求数据。这样,在漏洞的分析时,基于各个链路标识获取对应的请求数据进行漏洞分析。
需要指出的是,在获取到与链路标识对应的第一请求数据、各个第二请求数据之后,可以基于现有的敏感数据未加密漏洞规则进行敏感数据未加密漏洞检测,在此不做限制。
本发明实施例提供的分布式Web应用的敏感数据未加密漏洞的检测方法,所述分布式Web应用包括前端应用、至少一个后端应用,响应于用户向所述前端应用发送的访问请求时,调用运行在前端应用上的第一代理程序获取所述访问请求的第一请求数据;获取响应所述访问请求的调用链路的链路标识,并在待发送给每个目标后端应用的调用请求中添加所述链路标识,所述调用链路包括所述前端应用、至少一个目标后端应用,所述目标后端应用为所述至少一个后端应用中的任一个;响应于向每个目标后端应用发送包括所述链路标识的调用请求,调用运行在每个目标后端应用的上第二代理程序获取所述调用请求的第二请求数据;建立并存储链路标识与第一请求数据、各个第二请求数据的对应关系,以便根据所述对应关系获取与链路标识对应的第一请求数据、各个第二请求数据进行敏感数据未加密漏洞检测。由此,通过在分布式Web应用上运行的代理程序便可获取向前端应用发送的访问请求的请求数据以及向后端应用发送的调用请求的请求数据,并对所获取的请求数据进行敏感数据未加密漏洞检测;实现自动地、无入侵式地动态检测分布式Web应用的敏感数据未加密漏洞;不仅可以检测用户与前端应用交互时的敏感数据未加密漏洞,也可以检测前端应用与后端应用交互时的敏感数据未加密漏洞;还能够在应用功能测试时同时完成漏洞检测,无需专业的安全测试人员,节省人力物力,提高了检测效率。
图4为本发明实施例提供的又一种分布式Web应用的敏感数据未加密漏洞的检测方法的流程示意图。本实施例主要对如何根据所述对应关系获取与链路标识对应的第一请求数据、各个第二请求数据进行敏感数据未加密漏洞检测进行说明。结合参考图4,在图1所示的实施例的基础上,在步骤S104之后,该分布式Web应用的敏感数据未加密漏洞的检测方法还包括以下步骤:
步骤S105、获取与链路标识对应的第一请求数据、各个第二请求数据。
具体的,在漏洞分析阶段,针对每条调用链路,根据其链路标识查询预先存储的链路标识与第一请求数据、各个第二请求数据的对应关系,获取与链路标识对应的第一请求数据、各个第二请求数据进行该调用链路的敏感数据未加密漏洞的检测。
步骤S106、对所述第一请求数据进行解析,获取所述第一请求数据的第一关键字和与所述第一关键字对应的值,以及对每个第二请求数据进行解析,获取每个第二请求数据的第二关键字和与第二关键字对应的值。
具体的,为了便于漏洞的检测,对每条调用链路的第一请求数据、各个第二请求数据以键值对的形式进行数据解析,分别获取第一请求数据的第一关键字和与第一关键字对应的值,以及获取每个第二请求数据的第二关键字和与第二关键字对应的值。
例如,第一请求数据解析为password:12345、phone:010-12345、account number:623****1234、ID Card Number:360****1234等。其中,password、phone、account number、ID Card Number为关键字key,12345、010-12345、623****1234、360****1234等为关键字key对应的值value。
步骤S107、在所述第一关键字包含预设敏感关键字时,根据预设策略和与所述第一关键字对应的值确定所述第一请求数据是否为未加密的敏感数据。
步骤S108、在每个第二关键字包含预设敏感关键字时,根据预设策略和与第二关键字对应的值确定对应的所述第二请求数据是否为未加密的敏感数据。
需要指出的是,步骤S107和S108可以同步执行,也可以异步执行,执行顺序不做限制。
具体的,根据实际情形设置预设敏感关键字,预设敏感关键字例如为表征银行账号account number、表征密码的password或psd、表征身份证号ID Card Number、表征手机号码phone或telephone的等,但并不以此为限。
在不同的应用场景中,检测敏感关键字对应的值是否为未加密的敏感数据的方式不同。
例如,针对表征密码信息的敏感关键字,预测策略为判断该敏感关键字对应的值是否包括大小写、数字、符号,若判断结果为是,检测结果为存在未加密的敏感数据的漏洞,若判断结果为否,检测结果为不存在未加密的敏感数据的漏洞,
例如,针对以下敏感关键字中的任一种:表征银行账号的敏感关键字、表征身份证号的敏感关键字、表征手机号码的敏感关键字,预测策略为利用对应的正则表达式检测该敏感关键字对应的值进行匹配,若匹配成功则检测结果为存在未加密的敏感数据的漏洞,若匹配失败则检测结果为不存在未加密的敏感数据的漏洞。
以下为针对第一请求数据的漏洞分析的示例说明。
针对第一请求数据,“根据预设策略和与所述第一关键字对应的值确定所述第一请求数据是否为未加密的敏感数据”具体包括:
若所述预设敏感关键字表征密码信息,则判断与所述第一关键字对应的值是否包括大小写、数字、符号,若判断结果为是,则确定所述第一请求数据为未加密的敏感数据;
若所述预设敏感关键字表征手机号码,则利用手机号码正则表达式对与所述第一关键字对应的值进行匹配,若匹配成功,则确定所述第一请求数据为未加密的敏感数据;
若所述预设敏感关键字表征身份证号码,则利用身份证号码正则表达式对与所述第一关键字对应的值进行匹配,若匹配成功,则确定所述第一请求数据为未加密的敏感数据。
若所述预设敏感关键字表征银行卡号,则利用银行卡号正则表达式对与所述第一关键字对应的值进行匹配,若匹配成功,则确定所述第一请求数据为未加密的敏感数据。
以下为针对每个第二请求数据的漏洞分析的示例说明。
针对每个第二请求数据,“根据预设策略和与所述第二关键字对应的值确定对应的所述第二请求数据是否为未加密的敏感数据”具体包括:
若所述预设敏感关键字表征密码信息,则判断与所述第二关键字对应的值是否包括大小写、数字、符号,若判断结果为是,则确定对应的所述第二请求数据是否为未加密的敏感数据;
若所述预设敏感关键字表征手机号码,则利用手机号码正则表达式对与所述第二关键字对应的值进行匹配,若匹配成功,则确定对应的所述第二一请求数据为未加密的敏感数据;
若所述预设敏感关键字表征身份证号码,则利用身份证号码正则表达式对与所述第二关键字对应的值进行匹配,若匹配成功,则确定对应的所述第二请求数据为未加密的敏感数据;
若所述预设敏感关键字表征银行卡号,则利用银行卡号正则表达式对与所述第二关键字对应的值进行匹配,若匹配成功,则确定对应的所述第二请求数据为未加密的敏感数据。
本发明实施例提供的分布式Web应用的敏感数据未加密漏洞的检测方法,在建立并存储链路标识与第一请求数据、各个第二请求数据的对应关系之后,获取与链路标识对应的第一请求数据、各个第二请求数据;对所述第一请求数据进行解析,获取所述第一请求数据的第一关键字和与所述第一关键字对应的值,以及对每个第二请求数据进行解析,获取每个第二请求数据的第二关键字和与第二关键字对应的值。在所述第一关键字包含预设敏感关键字时,根据预设策略和与所述第一关键字对应的值确定所述第一请求数据是否为未加密的敏感数据;在每个第二关键字包含预设敏感关键字时,根据预设策略和与第二关键字对应的值确定对应的所述第二请求数据是否为未加密的敏感数据。由此,基于链路标识逐一获取相应的请求数据,并以键值对的形式解析请求数据获取相应的关键字和值,在判断关键字为敏感关键字后,通过分析关键字对应的值检查请求数据是否存在未加密的敏感数据漏洞,实现了漏洞的自动检测,提高了检测效率。
图5为本发明实施例提供的一种分布式Web应用的敏感数据未加密漏洞的检测装置的结构示意图。如图5所示,该分布式Web应用的敏感数据未加密漏洞的检测装置,包括:第一调用模块11、添加模块12、第二调用模块13、建立模块14,其中,所述分布式Web应用包括前端应用、至少一个后端应用;
第一调用模块11,用于响应于用户向所述前端应用发送的访问请求时,调用运行在前端应用上的第一代理程序获取所述访问请求的第一请求数据;
添加模块12,用于获取响应所述访问请求的调用链路的链路标识,并在待发送给每个目标后端应用的调用请求中添加所述链路标识,所述调用链路包括所述前端应用、至少一个目标后端应用,所述目标后端应用为所述至少一个后端应用中的任一个;
第二调用模块13,用于响应于向每个目标后端应用发送包括所述链路标识的调用请求,调用运行在每个目标后端应用的上第二代理程序获取所述调用请求的第二请求数据;
建立模块14,用于建立并存储链路标识与第一请求数据、各个第二请求数据的对应关系,以便根据所述对应关系获取与链路标识对应的第一请求数据、各个第二请求数据进行敏感数据未加密漏洞检测。
作为一种可能的实现方式,所述装置还包括:
处理模块,用于控制所述前端应用对应的服务器在启动命令中添加与所述第一代理程序匹配的命令,以在所述前端应用上运行第一代理程序;
所述处理模块,用于控制每个后端应用对应的服务器在启动命令中添加与对应的第二代理程序匹配的命令,以在所述后端应用上运行对应的第二代理程序。
作为一种可能的实现方式,所述第一调用模块11具体用于:
调用运行在所述前端应用上的第一代理程序的第一关键函数获取所述访问请求中请求头数据、表征提交表单传递参数的数据;
调用运行在所述前端应用上的第一代理程序的所述第二关键函数获取所述访问请求中请求体内容数据;
其中,所述第一关键函数用于获取所述访问请求中请求头数据、表征提交表单传递参数的数据,所述请求头数据包括表征发送数据流的类型的数据;所述第二关键函数用于获取所述访问请求中请求体内容数据。
作为一种可能的实现方式,所述添加模块12具体用于:
调用待发送给每个目标后端应用的调用请求的目标应用上的代理程序的第三关键函数,在待发送给每个目标后端应用的调用请求中添加所述链路标识,其中所述第三关键函数用于在待发送给每个目标后端应用的调用请求中添加所述链路标识。
作为一种可能的实现方式,所述第二调用模块13具体用于:
调用运行在每个目标后端应用上的第二代理程序的第四关键函数获取所述调用请求中请求头数据、表征提交表单传递参数的数据;
调用运行在每个目标后端应用上的第二代理程序的所述第五关键函数获取所述调用请求中请求体内容数据;
其中,所述第四关键函数用于获取所述访问请求中请求头数据、表征提交表单传递参数的数据,所述请求头数据包括表征发送数据流的类型的数据;所述第五关键函数用于获取所述访问请求中请求体内容数据。
需要说明的是,前述对分布式Web应用的敏感数据未加密漏洞的检测方法实施例的解释说明也适用于该实施例的分布式Web应用的敏感数据未加密漏洞的检测装置,此处不再赘述。
本发明实施例的分布式Web应用的敏感数据未加密漏洞的检测装置,所述分布式Web应用包括前端应用、至少一个后端应用,响应于用户向所述前端应用发送的访问请求时,调用运行在前端应用上的第一代理程序获取所述访问请求的第一请求数据;获取响应所述访问请求的调用链路的链路标识,并在待发送给每个目标后端应用的调用请求中添加所述链路标识,所述调用链路包括所述前端应用、至少一个目标后端应用,所述目标后端应用为所述至少一个后端应用中的任一个;响应于向每个目标后端应用发送包括所述链路标识的调用请求,调用运行在每个目标后端应用的上第二代理程序获取所述调用请求的第二请求数据;建立并存储链路标识与第一请求数据、各个第二请求数据的对应关系,以便根据所述对应关系获取与链路标识对应的第一请求数据、各个第二请求数据进行敏感数据未加密漏洞检测。由此,通过在分布式Web应用上运行的代理程序便可获取向前端应用发送的访问请求的请求数据以及向后端应用发送的调用请求的请求数据,并对所获取的请求数据进行敏感数据未加密漏洞检测;实现自动地、无入侵式地动态检测分布式Web应用的敏感数据未加密漏洞;不仅可以检测用户与前端应用交互时的敏感数据未加密漏洞,也可以检测前端应用与后端应用交互时的敏感数据未加密漏洞;还能够在应用功能测试时同时完成漏洞检测,无需专业的安全测试人员,节省人力物力,提高了检测效率。
图6为本发明实施例提供的又一种分布式Web应用的敏感数据未加密漏洞的检测装置的结构示意图。结合参考图6,在图5所示的实施例的基础上,该分布式Web应用的敏感数据未加密漏洞的检测装置还包括:
获取模块15,用于获取与链路标识对应的第一请求数据、各个第二请求数据;
解析模块16,用于对所述第一请求数据进行解析,获取所述第一请求数据的第一关键字和与所述第一关键字对应的值,以及对每个第二请求数据进行解析,获取每个第二请求数据的第二关键字和与第二关键字对应的值;
分析模块17,用于在所述第一关键字包含预设敏感关键字时,根据预设策略和与所述第一关键字对应的值确定所述第一请求数据是否为未加密的敏感数据;
所述分析模块17,还用于在每个第二关键字包含预设敏感关键字时,根据预设策略和与第二关键字对应的值确定对应的所述第二请求数据是否为未加密的敏感数据。
作为一种可能的实现方式,所述分析模块17具体用于:
若所述预设敏感关键字表征密码信息,则判断与所述第一关键字对应的值是否包括大小写、数字、符号,若判断结果为是,则确定所述第一请求数据是否为未加密的敏感数据;
若所述预设敏感关键字表征手机号码,则利用手机号码正则表达式对与所述第一关键字对应的值进行匹配,若匹配成功,则确定所述第一请求数据为未加密的敏感数据;
若所述预设敏感关键字表征身份证号码,则利用身份证号码正则表达式对与所述第一关键字对应的值进行匹配,若匹配成功,则确定所述第一请求数据为未加密的敏感数据;
若所述预设敏感关键字表征银行卡号,则利用银行卡号正则表达式对与所述第一关键字对应的值进行匹配,若匹配成功,则确定所述第一请求数据为未加密的敏感数据。
作为一种可能的实现方式,所述分析模块17还具体用于:
若所述预设敏感关键字表征密码信息,则判断与所述第二关键字对应的值是否包括大小写、数字、符号,若判断结果为是,则确定对应的所述第二请求数据是否为未加密的敏感数据;
若所述预设敏感关键字表征手机号码,则利用手机号码正则表达式对与所述第二关键字对应的值进行匹配,若匹配成功,则确定对应的所述第二一请求数据为未加密的敏感数据;
若所述预设敏感关键字表征身份证号码,则利用身份证号码正则表达式对与所述第二关键字对应的值进行匹配,若匹配成功,则确定对应的所述第二请求数据为未加密的敏感数据;
若所述预设敏感关键字表征银行卡号,则利用银行卡号正则表达式对与所述第二关键字对应的值进行匹配,若匹配成功,则确定对应的所述第二请求数据为未加密的敏感数据。
需要说明的是,前述对分布式Web应用的敏感数据未加密漏洞的检测方法实施例的解释说明也适用于该实施例的分布式Web应用的敏感数据未加密漏洞的检测装置,此处不再赘述。
本发明实施例的分布式Web应用的敏感数据未加密漏洞的检测装置,在建立并存储链路标识与第一请求数据、各个第二请求数据的对应关系之后,获取与链路标识对应的第一请求数据、各个第二请求数据;对所述第一请求数据进行解析,获取所述第一请求数据的第一关键字和与所述第一关键字对应的值,以及对每个第二请求数据进行解析,获取每个第二请求数据的第二关键字和与第二关键字对应的值。判断所述第一关键字是否包含预设敏感关键字,若是,则根据预设策略和与所述第一关键字对应的值确定所述第一请求数据是否为未加密的敏感数据;判断每个第二关键字是否包含预设敏感关键字,若是,则根据预设策略和与第二关键字对应的值确定对应的所述第二请求数据是否为未加密的敏感数据。由此,基于链路标识逐一获取相应的请求数据,并以键值对的形式解析请求数据获取相应的关键字和值,在判断关键字为敏感关键字后,通过分析关键字对应的值检查请求数据是否存在未加密的敏感数据漏洞,实现了漏洞的自动检测,提高了检测效率。
图7为本发明实施例提供的另一种分布式Web应用的敏感数据未加密漏洞的检测装置的结构示意图。该分布式Web应用的敏感数据未加密漏洞的检测装置包括:
存储器1001、处理器1002及存储在存储器1001上并可在处理器1002上运行的计算机程序。
处理器1002执行所述程序时实现上述实施例中提供的分布式Web应用的敏感数据未加密漏洞的检测方法。
进一步地,分布式Web应用的敏感数据未加密漏洞的检测装置还包括:
通信接口1003,用于存储器1001和处理器1002之间的通信。
存储器1001,用于存放可在处理器1002上运行的计算机程序。
存储器1001可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
处理器1002,用于执行所述程序时实现上述实施例所述的分布式Web应用的敏感数据未加密漏洞的检测方法。
如果存储器1001、处理器1002和通信接口1003独立实现,则通信接口1003、存储器1001和处理器1002可以通过总线相互连接并完成相互间的通信。所述总线可以是工业标准体系结构(Industry Standard Architecture,简称为ISA)总线、外部设备互连(Peripheral Component,简称为PCI)总线或扩展工业标准体系结构(Extended IndustryStandard Architecture,简称为EISA)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
可选的,在具体实现上,如果存储器1001、处理器1002及通信接口1003,集成在一块芯片上实现,则存储器1001、处理器1002及通信接口1003可以通过内部接口完成相互间的通信。
处理器1002可能是一个中央处理器(Central Processing Unit,简称为CPU),或者是特定集成电路(Application Specific Integrated Circuit,简称为ASIC),或者是被配置成实施本发明实施例的一个或多个集成电路。
本发明还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上所述的分布式Web应用的敏感数据未加密漏洞的检测方法。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现定制逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。如,如果用硬件来实现和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
Claims (13)
1.一种分布式Web应用的敏感数据未加密漏洞的检测方法,所述分布式Web应用包括前端应用、至少一个后端应用,其特征在于,包括:
响应于用户向所述前端应用发送的访问请求时,调用运行在前端应用上的第一代理程序获取所述访问请求的第一请求数据;
获取响应所述访问请求的调用链路的链路标识,并在待发送给每个目标后端应用的调用请求中添加所述链路标识,所述调用链路包括所述前端应用、至少一个目标后端应用,所述目标后端应用为所述至少一个后端应用中的任一个;
响应于向每个目标后端应用发送包括所述链路标识的调用请求,调用运行在每个目标后端应用的上第二代理程序获取所述调用请求的第二请求数据;
建立并存储链路标识与第一请求数据、各个第二请求数据的对应关系,以便根据所述对应关系获取与链路标识对应的第一请求数据、各个第二请求数据进行敏感数据未加密漏洞检测。
2.如权利要求1所述的方法,其特征在于,还包括:
控制所述前端应用对应的服务器在启动命令中添加与所述第一代理程序匹配的命令,以在所述前端应用上运行第一代理程序;
控制每个后端应用对应的服务器在启动命令中添加与对应的第二代理程序匹配的命令,以在所述后端应用上运行对应的第二代理程序。
3.如权利要求1所述的方法,其特征在于,所述调用运行在前端应用上的第一代理程序获取所述访问请求的第一请求数据,包括:
调用运行在所述前端应用上的第一代理程序的第一关键函数获取所述访问请求中请求头数据和表征提交表单传递参数的数据;
调用运行在所述前端应用上的第一代理程序的第二关键函数获取所述访问请求中请求体内容数据;
其中,所述第一关键函数用于获取所述访问请求中请求头数据和表征提交表单传递参数的数据,所述请求头数据包括表征发送数据流的类型的数据;所述第二关键函数用于获取所述访问请求中请求体内容数据。
4.如权利要求1所述的方法,其特征在于,所述在待发送给每个目标后端应用的调用请求中添加所述链路标识,包括:
调用待发送给每个目标后端应用的调用请求的目标应用上的代理程序的第三关键函数,在待发送给每个目标后端应用的调用请求中添加所述链路标识,其中所述第三关键函数用于在待发送给每个目标后端应用的调用请求中添加所述链路标识,所述目标应用为所述前端应用或所述目标后端应用。
5.如权利要求1所述的方法,其特征在于,所述调用运行在每个目标后端应用的上第二代理程序获取所述调用请求的第二请求数据,包括:
调用运行在每个目标后端应用上的第二代理程序的第四关键函数获取所述调用请求中请求头数据和表征提交表单传递参数的数据;
调用运行在每个目标后端应用上的第二代理程序的第五关键函数获取所述调用请求中请求体内容数据;
其中,所述第四关键函数用于获取所述访问请求中请求头数据和表征提交表单传递参数的数据,所述请求头数据包括表征发送数据流的类型的数据;所述第五关键函数用于获取所述访问请求中请求体内容数据。
6.如权利要求1所述的方法,其特征在于,在建立并存储链路标识与第一请求数据、各个第二请求数据的对应关系之后,还包括:
获取与链路标识对应的第一请求数据、各个第二请求数据;
对所述第一请求数据进行解析,获取所述第一请求数据的第一关键字和与所述第一关键字对应的值,以及对每个第二请求数据进行解析,获取每个第二请求数据的第二关键字和与第二关键字对应的值;
在所述第一关键字包含预设敏感关键字时,根据预设策略和与所述第一关键字对应的值确定所述第一请求数据是否为未加密的敏感数据;
在每个第二关键字包含预设敏感关键字时,根据预设策略和与第二关键字对应的值确定对应的所述第二请求数据是否为未加密的敏感数据。
7.如权利要求6所述的方法,其特征在于,所述根据预设策略和与所述第一关键字对应的值确定所述第一请求数据是否为未加密的敏感数据,包括:
若所述预设敏感关键字表征密码信息,则判断与所述第一关键字对应的值是否包括大小写、数字和符号,若判断结果为是,则确定所述第一请求数据是否为未加密的敏感数据;
若所述预设敏感关键字表征手机号码,则利用手机号码正则表达式对与所述第一关键字对应的值进行匹配,若匹配成功,则确定所述第一请求数据为未加密的敏感数据;
若所述预设敏感关键字表征身份证号码,则利用身份证号码正则表达式对与所述第一关键字对应的值进行匹配,若匹配成功,则确定所述第一请求数据为未加密的敏感数据;
若所述预设敏感关键字表征银行卡号,则利用银行卡号正则表达式对与所述第一关键字对应的值进行匹配,若匹配成功,则确定所述第一请求数据为未加密的敏感数据。
8.如权利要求6所述的方法,其特征在于,所述根据预设策略和与所述第二关键字对应的值确定对应的所述第二请求数据是否为未加密的敏感数据,包括:
若所述预设敏感关键字表征密码信息,则判断与所述第二关键字对应的值是否包括大小写、数字和符号,若判断结果为是,则确定对应的所述第二请求数据是否为未加密的敏感数据;
若所述预设敏感关键字表征手机号码,则利用手机号码正则表达式对与所述第二关键字对应的值进行匹配,若匹配成功,则确定对应的所述第二请求数据为未加密的敏感数据;
若所述预设敏感关键字表征身份证号码,则利用身份证号码正则表达式对与所述第二关键字对应的值进行匹配,若匹配成功,则确定对应的所述第二请求数据为未加密的敏感数据;
若所述预设敏感关键字表征银行卡号,则利用银行卡号正则表达式对与所述第二关键字对应的值进行匹配,若匹配成功,则确定对应的所述第二请求数据为未加密的敏感数据。
9.一种分布式Web应用的敏感数据未加密漏洞的检测装置,所述分布式Web应用包括前端应用、至少一个后端应用,其特征在于,包括:
第一调用模块,用于响应于用户向所述前端应用发送的访问请求时,调用运行在前端应用上的第一代理程序获取所述访问请求的第一请求数据;
添加模块,用于获取响应所述访问请求的调用链路的链路标识,并在待发送给每个目标后端应用的调用请求中添加所述链路标识,所述调用链路包括所述前端应用、至少一个目标后端应用,所述目标后端应用为所述至少一个后端应用中的任一个;
第二调用模块,用于响应于向每个目标后端应用发送包括所述链路标识的调用请求,调用运行在每个目标后端应用的上第二代理程序获取所述调用请求的第二请求数据;
建立模块,用于建立并存储链路标识与第一请求数据、各个第二请求数据的对应关系,以便根据所述对应关系获取与链路标识对应的第一请求数据、各个第二请求数据进行敏感数据未加密漏洞检测。
10.如权利要求9所述的装置,其特征在于,还包括:
处理模块,用于控制所述前端应用对应的服务器在启动命令中添加与所述第一代理程序匹配的命令,以在所述前端应用上运行第一代理程序;
所述处理模块,用于控制每个后端应用对应的服务器在启动命令中添加与对应的第二代理程序匹配的命令,以在所述后端应用上运行对应的第二代理程序。
11.如权利要求9所述的装置,其特征在于,还包括:
获取模块,用于获取与链路标识对应的第一请求数据、各个第二请求数据;
解析模块,用于对所述第一请求数据进行解析,获取所述第一请求数据的第一关键字和与所述第一关键字对应的值,以及对每个第二请求数据进行解析,获取每个第二请求数据的第二关键字和与第二关键字对应的值;
分析模块,用于在所述第一关键字是否包含预设敏感关键字时,根据预设策略和与所述第一关键字对应的值确定所述第一请求数据是否为未加密的敏感数据;
所述分析模块,还用于在每个第二关键字是否包含预设敏感关键字时,根据预设策略和与第二关键字对应的值确定对应的所述第二请求数据是否为未加密的敏感数据。
12.一种分布式Web应用的敏感数据未加密漏洞的检测装置,其特征在于,包括:
存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如权利要求1-8中任一所述的分布式Web应用的敏感数据未加密漏洞的检测方法。
13.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-8中任一所述的分布式Web应用的敏感数据未加密漏洞的检测方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911024060.6A CN111049795B (zh) | 2019-10-25 | 2019-10-25 | 分布式Web应用的敏感数据未加密漏洞的检测方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911024060.6A CN111049795B (zh) | 2019-10-25 | 2019-10-25 | 分布式Web应用的敏感数据未加密漏洞的检测方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111049795A CN111049795A (zh) | 2020-04-21 |
CN111049795B true CN111049795B (zh) | 2021-11-02 |
Family
ID=70232605
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911024060.6A Active CN111049795B (zh) | 2019-10-25 | 2019-10-25 | 分布式Web应用的敏感数据未加密漏洞的检测方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111049795B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114124476B (zh) * | 2021-11-05 | 2023-07-14 | 苏州浪潮智能科技有限公司 | 一种Web应用的敏感信息泄露漏洞检测方法、系统及装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7620980B1 (en) * | 1999-07-21 | 2009-11-17 | Sun Microsystems, Inc. | Secure data broker |
CN106302337B (zh) * | 2015-05-22 | 2020-12-04 | 腾讯科技(深圳)有限公司 | 漏洞检测方法和装置 |
US20180115542A1 (en) * | 2016-10-24 | 2018-04-26 | Caradigm Usa Llc | Security mechanism for multi-tiered server-implemented applications |
-
2019
- 2019-10-25 CN CN201911024060.6A patent/CN111049795B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN111049795A (zh) | 2020-04-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108650149B (zh) | 服务器的测试方法、装置、设备及计算机可读存储介质 | |
CN111400722B (zh) | 扫描小程序的方法、装置、计算机设备和存储介质 | |
CN107196950B (zh) | 校验方法、装置及服务端 | |
US11108803B2 (en) | Determining security vulnerabilities in application programming interfaces | |
CN111143087A (zh) | 一种接口调用方法、装置、存储介质和服务器 | |
CN110958221B (zh) | 动态检测xml外部实体注入漏洞的方法及装置 | |
CN111818035B (zh) | 一种基于api网关的权限验证的方法及设备 | |
US20180227326A1 (en) | Detecting sensitive data sent from client device to third-party | |
CN111614624A (zh) | 风险检测方法、装置、系统及存储介质 | |
CN108121606B (zh) | 基于联调接口的编码数据生成的方法及装置 | |
CN111049795B (zh) | 分布式Web应用的敏感数据未加密漏洞的检测方法及装置 | |
CN112699034B (zh) | 虚拟登录用户构建方法、装置、设备及存储介质 | |
CN108512889B (zh) | 一种基于http的应用响应推送方法及代理服务器 | |
CN112162873B (zh) | 一种远程调用方法、电子装置和存储介质 | |
CN117093977A (zh) | 用户认证方法、系统、装置、存储介质以及电子设备 | |
CN111309407A (zh) | 集成第三方库的处理方法及装置 | |
CN110995756B (zh) | 调用服务的方法和装置 | |
US20230185922A1 (en) | Static-dynamic integration | |
CN112632534A (zh) | 一种恶意行为检测方法及装置 | |
CN113987506A (zh) | 认证系统的测试方法、装置、测试设备和存储介质 | |
CN107105036B (zh) | 一种用于服务器的活动溯源方法和系统 | |
KR102001814B1 (ko) | 모바일 장치 기반의 악성 스크립트 탐지 방법 및 그 장치 | |
CN112417328B (zh) | 一种网页监控方法及装置 | |
CN111581172B (zh) | 运行日志的查询方法、系统、服务器及存储介质 | |
US11966794B2 (en) | Lightweight configuration management for application programming interfaces |
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 |