依据网上查的相关文章用cxf实现拦截器

本文记录了一位开发者在项目中为解决SQL注入和XXL攻击,采用CXF拦截器进行处理的过程。通过参照网上资料,逐步解决了缺少依赖包、Bean未定义、拦截器初始化等问题,最终成功实现拦截器并计划进一步研究参数过滤功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目的:项目中进行渗透扫描时,发现有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启动就不报异常了,再访问任何srpwebservic请求,都打印


至此,说明拦截器已经加成功了,接下来要实现的是把请求中的参数,进行过滤后重新封装参数再往下执行?,同时还要说明一点,上面解决的有些异常可能索引的包就用不到了。这点先不验证,所引入的包也先不移除。

总结:上述过程是我在参照示例文章所执行的所有步骤,最终实现之后回顾实际拦截器的正常使用三步就够了:

1.自定义继承AbstractPhaseInterceptor拦截器类;

2.引入相关jar包;

3.配置文件中限定自定义的拦截器bean,再根据是jaxws或者jaxrs进行配置引入定义的拦截器bean即可.

之所以把报错截图和解决思路都写出来就是想帮助像我一样搜索到这些文章,但是没有实现的朋友们.最后有不足之处,请大家指正。后续还要研究拦截其中如何过滤参数,如实现了还会有续文。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值