目的:项目中进行渗透扫描时,发现有sql注入和xxl攻击,所以打算利用拦截过滤或者提示一些规定的字符
项目框架:cxf +spring + hibernate
第一步打算是进行cxf下拦截器的实现
按照网上例子:参照地址http://yufenfei.iteye.com/blog/1688133
结果遇到异常:如图
经过一番搜索找到了这篇文章:http://blog.youkuaiyun.com/w1014074794/article/details/47862163
觉得很有用,直接提到了这个异常缺的包是cxf-rt-frontend-simple-3.1.10.jar
于是下载了官方的cxf压缩包:
http://apache.fayea.com/cxf/3.1.10/apache-cxf-3.1.10.zip
来自 <http://101.96.8.165/www.apache.org/dyn/closer.lua/cxf/3.1.10/apache-cxf-3.1.10.zip>
再从http://blog.youkuaiyun.com/w1014074794/article/details/47862163中查找:
发现缺少的是:
cxf-rt-wsdl-3.0.4.jar
来自 <http://blog.youkuaiyun.com/w1014074794/article/details/47862163>
上述红字截图部分异常果然又消失了,但是又继续报新的异常,如图:
其实到这里说明包已经不缺失了,这里的异常说的是No bean named 'HelloWorldImpl' is defined.所以接下来查找这个原因,这是我找到的是这篇文章的连接http://www.iteye.com/topic/1122268
其中提到的
所以是缺失了bean.
依照http://www.iteye.com/topic/1122268写了最简单的HelloWorld接口
,及其实现
接下来上述红自异常又消失了,但是又产生了新的异常
继续从http://blog.youkuaiyun.com/w1014074794/article/details/47862163中查找,发现缺失包:
cxf-rt-bindings-soap-3.0.4.jar
来自 <http://blog.youkuaiyun.com/w1014074794/article/details/47862163>
不出所料,上述红字部分异常消失,再次产生新的异常,如图:
这会终于进行到要做的核心部分,拦截器的异常,说是没有HelloInInterceptor没有初始化方法,经过对比
发现少了图中画红线的部分,于是补充上了,果然上述异常消失了,再次启动服务器,在又抛出新的异常,如图
这个问题卡住了,网上没找到相关的解决方案
最终自己调整代码解决了这个异常:
想把实例化不了的bean屏蔽掉,
然后将
红括号中的代码移到现有项目中的位置,但是是javxrs的。所以开头和结尾的标签由jaxws改成jaxrs启动就不报异常了,再访问任何srp的webservic请求,都打印
至此,说明拦截器已经加成功了,接下来要实现的是把请求中的参数,进行过滤后重新封装参数再往下执行?,同时还要说明一点,上面解决的有些异常可能索引的包就用不到了。这点先不验证,所引入的包也先不移除。
总结:上述过程是我在参照示例文章所执行的所有步骤,最终实现之后回顾实际拦截器的正常使用三步就够了:
1.自定义继承AbstractPhaseInterceptor拦截器类;
2.引入相关jar包;
3.配置文件中限定自定义的拦截器bean,再根据是jaxws或者jaxrs进行配置引入定义的拦截器bean即可.
之所以把报错截图和解决思路都写出来就是想帮助像我一样搜索到这些文章,但是没有实现的朋友们.最后有不足之处,请大家指正。后续还要研究拦截其中如何过滤参数,如实现了还会有续文。