一种基于规则的Java的web安全防御方法与流程

文档序号:14796355发布日期:2018-06-29 06:35阅读:376来源:国知局

本发明是关于互联网安全领域,特别涉及一种基于规则的Java的web安全防御方法。



背景技术:

当全球互联设备网应用迎来爆发式的增长,互联网安全下所暴露出的安全问题也是层出不穷。利用漏洞通过对暴露在公网上或者直接可以未授权连接的内网环境下的web平台或者服务器进行攻击,可以获得该服务器权限,一方面可以直接获得该服务器上的敏感文件,敏感数据等信息,另一方面也可以把该服务器做为跳板,对该服务器可以触及的网段进行内网渗透,可以攻击该网段中的服务器及更多的智能设备,获得大量内网敏感信息,获得服务器权限等。

Java Web开发自1999年至今已经经历近20年历程,虽然推出了Spring、Struts、Hibernate、Ibatis等基于业务或者数据库的框架,但是由于开发人员安全意识的薄弱,开发人员的快速流动以及框架自身存在的漏洞,经常会由于参数被污染导致SQL注入、命令注入、文件上传等漏洞产生。攻击者利用漏洞可以远程在服务器上执行任意代码,取得网站服务器控制权。造成获得网站敏感数据,获得网站后台权限,篡改网站数据等严重后果。

目前已有基于Web Filter的内容过滤机制,但是此技术方法过滤的结果是为了防止网页被篡改,是通过Filter给网页做数字加密,然后在请求后与服务器上的页面文件做校验,而非基于参数判断当前请求是否安全。

Web Filter在Java Web开发过滤方面,不管是业务还是安全方面都可以发挥很大的作用。但是参数在进入业务前,如果没有经过过滤处理直接进入业务处理函数,是不安全的,虽然功能方面实现了需求,但是如果参数遭到污染,可能造成很严重的漏洞。



技术实现要素:

本发明的主要目的在于克服现有技术中的不足,提供一种利用Web Filter对请求中的参数进行过滤,能把存在攻击行为的请求阻断,防止被污染的参数进入业务函数的方法。为解决上述技术问题,本发明的解决方案是:

提供一种基于规则的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类型的恶意文件后缀,则把当前请求地址、存在恶意操作的文件参数名记录到日志中,并且阻断当前请求,抛一个非法字符的异常,不再继续后续步骤(不再继续后续函数流程);否则文件结束过滤流程,进入程序正常业务函数流程;

步骤四:通过步骤三的过滤后,再对参数值进行一轮黑名单策略的测试:如果参数匹配到策略中的黑名单列表(比如包含union select等恶意字符及其变异后的字符),则把当前请求地址、存在恶意操作的参数及恶意字符记录到日志中,并且阻断当前请求;如果参数未匹配到策略中的黑名单列表(即通过了上述所有流程的过滤,且都显示是安全请求),则让参数继续进入业务函数中。

本发明的工作原理:本发明利用Web Filter,继承HttpServletRequestWrapper重写一个类,利用getInputStream()和getParameterValues()获取参数值,然后对于请求中的参数进行过滤,判断请求中的参数是否存在攻击行为;

本发明重写getInputStream()和getParameterValues(),getInputStream()用来获取Post请求类型中multipart的请求体,并且可以剥离获取其中的上传文件的filename,getParameterValues()获取Post或者Get请求类型中的请求参数值。

与现有技术相比,本发明的有益效果是:

本发明利用Web Filter,对于请求中的参数进行过滤,判断请求中的参数是否存在攻击行为;能把存在攻击行为例如SQL注入,命令注入等请求阻断,防止被污染的参数进入业务函数,导致漏洞的产生。

即使网站存在漏洞,但是只要通过本发明对请求中的参数都进行检测,阻断存在恶意攻击的请求,只让安全的请求参数进入业务处理函数,这样也能在一定程度上避免SQL注入、命令注入、文件上传等漏洞的产生。

附图说明

图1为本发明的流程图。

具体实施方式

首先需要说明的是,本发明是计算机技术在信息安全技术领域的一种应用。在本发明的实现过程中,会涉及到多个软件功能模块的应用。申请人认为,如在仔细阅读申请文件、准确理解本发明的实现原理和发明目的以后,在结合现有公知技术的情况下,本领域技术人员完全可以运用其掌握的软件编程技能实现本发明。凡本发明申请文件提及的均属此范畴,申请人不再一一列举。

下面结合附图与具体实施方式对本发明作进一步详细描述:

如图1所示的一种基于规则的Java的web安全防御方法,利用Java Web的框架中的filter过滤器,在参数进入业务函数前获取对应的参数值,然后判断参数值是否存在恶意操作。

Filter,也称之为过滤器,它是Servlet技术中最实用的技术,Web开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp,Servlet,静态图片文件或静态html文件等进行拦截,从而实现一些特殊的功能。

恶意操作,在参数值里面添加恶意字符串,能造成SQL注入,跨站等漏洞。

该种基于规则的Java的web安全防御方法,操作步骤如下:

步骤一:在web根目录下的WEB-INF目录下的web.xml文件中添加<filter>项,配置参数匹配规则文件、日志文件、过滤白名单文件等目录和指定Web Filter的class。

步骤二:把参数匹配规则文件、日志文件等配置文件放到参数匹配规则文件,日志文件配置的目录下,并且在白名单列表中预设不需要过滤的请求地址。

步骤三:把封装好过滤函数的Web Filter的jar包放到web根目录下的WEB-INF目录下的lib目录中。

步骤四:重启tomcat。

步骤五:对配置了防御插件的web进行全部功能的正常操作。

步骤六:查看防御日志文件,如果日志中存在误报的结果,就把这个请求加入白名单列表。

本发明利用Web Filter,继承HttpServletRequestWrapper重写一个类,利用getInputStream()和getParameterValues()获取参数值,然后对于请求中的参数进行过滤,判断请求中的参数是否存在攻击行为。当然也可以通过Filter直接实现Filter接口,然后在doFilter方法中通过HttpServletRequest获得请求中的参数及参数值,并对参数值进行检测,这样也可以完成发明的目的。

最后,需要注意的是,以上列举的仅是本发明的具体实施例。显然,本发明不限于以上实施例,还可以有很多变形。本领域的普通技术人员能从本发明公开的内容中直接导出或联想到的所有变形,均应认为是本发明的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1