一种基于规则的Java的web安全防御方法技术

技术编号:18356125 阅读:64 留言:0更新日期:2018-07-02 09:42
本发明专利技术涉及互联网安全,旨在提供一种基于规则的Java的web安全防御方法。该种基于规则的Java的web安全防御方法包括步骤:获取当前请求地址,判断当前请求是否是静态文件;若当前请求不是静态文件且不存在于请求地址白名单列表中,则剥离请求中的参数及参数值,再进行白名单策略的校验;有些经过白名单策略的过滤后,还需对参数值进行一轮黑名单策略的测试。本发明专利技术利用Web Filter,对于请求中的参数进行过滤,判断请求中的参数是否存在攻击行为;能把存在攻击行为的请求阻断,防止被污染的参数进入业务函数,导致漏洞的产生。

【技术实现步骤摘要】
一种基于规则的Java的web安全防御方法
本专利技术是关于互联网安全领域,特别涉及一种基于规则的Java的web安全防御方法。
技术介绍
当全球互联设备网应用迎来爆发式的增长,互联网安全下所暴露出的安全问题也是层出不穷。利用漏洞通过对暴露在公网上或者直接可以未授权连接的内网环境下的web平台或者服务器进行攻击,可以获得该服务器权限,一方面可以直接获得该服务器上的敏感文件,敏感数据等信息,另一方面也可以把该服务器做为跳板,对该服务器可以触及的网段进行内网渗透,可以攻击该网段中的服务器及更多的智能设备,获得大量内网敏感信息,获得服务器权限等。JavaWeb开发自1999年至今已经经历近20年历程,虽然推出了Spring、Struts、Hibernate、Ibatis等基于业务或者数据库的框架,但是由于开发人员安全意识的薄弱,开发人员的快速流动以及框架自身存在的漏洞,经常会由于参数被污染导致SQL注入、命令注入、文件上传等漏洞产生。攻击者利用漏洞可以远程在服务器上执行任意代码,取得网站服务器控制权。造成获得网站敏感数据,获得网站后台权限,篡改网站数据等严重后果。目前已有基于WebFilter的内容过滤机制,但是此技术方法过滤的结果是为了防止网页被篡改,是通过Filter给网页做数字加密,然后在请求后与服务器上的页面文件做校验,而非基于参数判断当前请求是否安全。WebFilter在JavaWeb开发过滤方面,不管是业务还是安全方面都可以发挥很大的作用。但是参数在进入业务前,如果没有经过过滤处理直接进入业务处理函数,是不安全的,虽然功能方面实现了需求,但是如果参数遭到污染,可能造成很严重的漏洞。
技术实现思路
本专利技术的主要目的在于克服现有技术中的不足,提供一种利用WebFilter对请求中的参数进行过滤,能把存在攻击行为的请求阻断,防止被污染的参数进入业务函数的方法。为解决上述技术问题,本专利技术的解决方案是:提供一种基于规则的Java的web安全防御方法,用于判断请求中的参数是否存在攻击行为,所述基于规则的Java的web安全防御方法具体包括下述步骤:步骤一:获取当前请求地址,判断当前请求是否是静态文件;如果当前请求地址是静态文件,则不对当前请求做后续的参数过滤处理,直接进入正常业务流程函数中;如果当前请求不是静态文件,判断当前请求地址是否存在于请求地址白名单列表中:若当前请求地址在请求地址白名单列表中,即当前请求地址是不需要过滤的白名单,当前请求直接进入正常业务函数中,即不再继续后续步骤(当前请求的参数不做后续的过滤步骤);如果当前请求地址不存在于请求地址白名单列表中,则进入步骤二;步骤二:首先剥离请求中的参数及参数值,具体如下:如果当前请求是Get请求,则直接配置获得url及问号后面的参数和参数值;如果当前请求是Post请求,则分下述三种情况处理:1、请求体是key1=value1&key2=value2格式的请求,其中,key1表示第一个参数名,value1表示参数key1的参数值,key2表示第二个参数名,value2表示参数key2的参数值,则直接获取参数key1和key2的请求值;2、请求体整个是json格式的请求,则利用json解析把参数剥离出来(比如请求体是{“key1”:“value1”,“key2”:“value2”},则利用json解析把对应的key1、key2的参数剥离出来);3、请求体是Post中multipart格式的请求,则剥离出请求体中各参数及参数值;步骤三:步骤二中剥离出请求中的参数及参数值后,所有的参数分别进入过滤函数(自研)对参数值进行校验,即进行白名单策略的校验;首先取配置文件中的白名单策略,组成白名单策略列表,然后遍历白名单策略列表:如果当前请求是非Post类型中的multipart格式的请求类型,把参数值分别与每一条白名单策略做正则匹配;如果参数值无法匹配白名单策略列表中的任意一条白名单策略,则判断参数值中存在(SQL注入、命令注入等)恶意行为,把当前请求地址、存在恶意操作的文件参数名记录到日志中并且阻断当前操作,抛一个非法字符的异常,不再继续后续步骤(不再继续后续函数流程);如果参数值能匹配白名单策略列表中的任意一条白名单策略,则该参数值进入后续步骤四的黑名单处理流程;如果当前请求是Post类型中的multipart格式的请求类型,把参数值分别与每一条白名单策略做正则匹配;如果参数值无法匹配白名单策略列表中的任意一条白名单策略,则判断参数值中存在(SQL注入、命令注入等)恶意行为,把当前请求地址、存在恶意操作的文件参数名记录到日志中并且阻断当前操作,抛一个非法字符的异常,不再继续后续步骤(不再继续后续函数流程);如果参数值能匹配白名单策略列表中的任意一条白名单策略,且请求里面不存在上传文件参数,则该参数值进入后续步骤四的黑名单处理流程;如果参数值能匹配白名单策略列表中的任意一条白名单策略,且请求里面存在上传文件参数,则对文件后缀进行提取,并判断该文件后缀是否是jsp或者jspx类型的恶意文件后缀:如果判断是jsp或者jspx类型的恶意文件后缀,则把当前请求地址、存在恶意操作的文件参数名记录到日志中,并且阻断当前请求,抛一个非法字符的异常,不再继续后续步骤(不再继续后续函数流程);否则文件结束过滤流程,进入程序正常业务函数流程;步骤四:通过步骤三的过滤后,再对参数值进行一轮黑名单策略的测试:如果参数匹配到策略中的黑名单列表(比如包含unionselect等恶意字符及其变异后的字符),则把当前请求地址、存在恶意操作的参数及恶意字符记录到日志中,并且阻断当前请求;如果参数未匹配到策略中的黑名单列表(即通过了上述所有流程的过滤,且都显示是安全请求),则让参数继续进入业务函数中。本专利技术的工作原理:本专利技术利用WebFilter,继承HttpServletRequestWrapper重写一个类,利用getInputStream()和getParameterValues()获取参数值,然后对于请求中的参数进行过滤,判断请求中的参数是否存在攻击行为;本专利技术重写getInputStream()和getParameterValues(),getInputStream()用来获取Post请求类型中multipart的请求体,并且可以剥离获取其中的上传文件的filename,getParameterValues()获取Post或者Get请求类型中的请求参数值。与现有技术相比,本专利技术的有益效果是:本专利技术利用WebFilter,对于请求中的参数进行过滤,判断请求中的参数是否存在攻击行为;能把存在攻击行为例如SQL注入,命令注入等请求阻断,防止被污染的参数进入业务函数,导致漏洞的产生。即使网站存在漏洞,但是只要通过本专利技术对请求中的参数都进行检测,阻断存在恶意攻击的请求,只让安全的请求参数进入业务处理函数,这样也能在一定程度上避免SQL注入、命令注入、文件上传等漏洞的产生。附图说明图1为本专利技术的流程图。具体实施方式首先需要说明的是,本专利技术是计算机技术在信息安全
的一种应用。在本专利技术的实现过程中,会涉及到多个软件功能模块的应用。申请人认为,如在仔细阅读申请文件、准确理解本专利技术的实现本文档来自技高网
...
一种基于规则的Java的web安全防御方法

【技术保护点】
1.一种基于规则的Java的web安全防御方法,用于判断请求中的参数是否存在攻击行为,其特征在于,所述基于规则的Java的web安全防御方法具体包括下述步骤:步骤一:获取当前请求地址,判断当前请求是否是静态文件;如果当前请求地址是静态文件,则不对当前请求做后续的参数过滤处理,直接进入正常业务流程函数中;如果当前请求不是静态文件,判断当前请求地址是否存在于请求地址白名单列表中:若当前请求地址在请求地址白名单列表中,即当前请求地址是不需要过滤的白名单,当前请求直接进入正常业务函数中,即不再继续后续步骤;如果当前请求地址不存在于请求地址白名单列表中,则进入步骤二;步骤二:首先剥离请求中的参数及参数值,具体如下:如果当前请求是Get请求,则直接配置获得url及问号后面的参数和参数值;如果当前请求是Post请求,则分下述三种情况处理:1、请求体是key1=value1&key2=value2格式的请求,其中,key1表示第一个参数名,value1表示参数key1的参数值,key2表示第二个参数名,value2表示参数key2的参数值,则直接获取参数key1和key2的请求值;2、请求体整个是json格式的请求,则利用json解析把参数剥离出来;3、请求体是Post中multipart格式的请求,则剥离出请求体中各参数及参数值;步骤三:步骤二中剥离出请求中的参数及参数值后,所有的参数分别进入过滤函数对参数值进行校验,即进行白名单策略的校验;首先取配置文件中的白名单策略,组成白名单策略列表,然后遍历白名单策略列表:如果当前请求是非Post类型中的multipart格式的请求类型,把参数值分别与每一条白名单策略做正则匹配;如果参数值无法匹配白名单策略列表中的任意一条白名单策略,则判断参数值中存在恶意行为,把当前请求地址、存在恶意操作的文件参数名记录到日志中并且阻断当前操作,抛一个非法字符的异常,不再继续后续步骤;如果参数值能匹配白名单策略列表中的任意一条白名单策略,则该参数值进入后续步骤四的黑名单处理流程;如果当前请求是Post类型中的multipart格式的请求类型,把参数值分别与每一条白名单策略做正则匹配;如果参数值无法匹配白名单策略列表中的任意一条白名单策略,则判断参数值中存在恶意行为,把当前请求地址、存在恶意操作的文件参数名记录到日志中并且阻断当前操作,抛一个非法字符的异常,不再继续后续步骤;如果参数值能匹配白名单策略列表中的任意一条白名单策略,且请求里面不存在上传文件参数,则该参数值进入后续步骤四的黑名单处理流程;如果参数值能匹配白名单策略列表中的任意一条白名单策略,且请求里面存在上传文件参数,则对文件后缀进行提取,并判断该文件后缀是否是jsp或者jspx类型的恶意文件后缀:如果判断是jsp或者jspx类型的恶意文件后缀,则把当前请求地址、存在恶意操作的文件参数名记录到日志中,并且阻断当前请求,抛一个非法字符的异常,不再继续后续步骤;否则文件结束过滤流程,进入程序正常业务函数流程;步骤四:通过步骤三的过滤后,再对参数值进行一轮黑名单策略的测试:如果参数匹配到策略中的黑名单列表,则把当前请求地址、存在恶意操作的参数及恶意字符记录到日志中,并且阻断当前请求;如果参数未匹配到策略中的黑名单列表,则让参数继续进入业务函数中。...

【技术特征摘要】
1.一种基于规则的Java的web安全防御方法,用于判断请求中的参数是否存在攻击行为,其特征在于,所述基于规则的Java的web安全防御方法具体包括下述步骤:步骤一:获取当前请求地址,判断当前请求是否是静态文件;如果当前请求地址是静态文件,则不对当前请求做后续的参数过滤处理,直接进入正常业务流程函数中;如果当前请求不是静态文件,判断当前请求地址是否存在于请求地址白名单列表中:若当前请求地址在请求地址白名单列表中,即当前请求地址是不需要过滤的白名单,当前请求直接进入正常业务函数中,即不再继续后续步骤;如果当前请求地址不存在于请求地址白名单列表中,则进入步骤二;步骤二:首先剥离请求中的参数及参数值,具体如下:如果当前请求是Get请求,则直接配置获得url及问号后面的参数和参数值;如果当前请求是Post请求,则分下述三种情况处理:1、请求体是key1=value1&key2=value2格式的请求,其中,key1表示第一个参数名,value1表示参数key1的参数值,key2表示第二个参数名,value2表示参数key2的参数值,则直接获取参数key1和key2的请求值;2、请求体整个是json格式的请求,则利用json解析把参数剥离出来;3、请求体是Post中multipart格式的请求,则剥离出请求体中各参数及参数值;步骤三:步骤二中剥离出请求中的参数及参数值后,所有的参数分别进入过滤函数对参数值进行校验,即进行白名单策略的校验;首先取配置文件中的白名单策略,组成白名单策略列表,然后遍历白名单策略列表:如果当前请求是非Post类型中的multipart格式...

【专利技术属性】
技术研发人员:徐吉范渊
申请(专利权)人:杭州安恒信息技术有限公司
类型:发明
国别省市:浙江,33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1