Soul 学习笔记---使用 waf 插件(十九)

登录 soul-admin,开启 waf 插件。官网上的这两句很重要,waf 插件源码的实现也是根据这两句话来的。当 module 设置为 black 模式的时候,只有匹配的流量才会执行拒绝策略,不匹配的,直接会跳过。当 module 设置为 mixed 模式的时候,所有的流量都会通过 waf插件,针对不同的匹配流量,用户可以设置是 拒绝,还是通过。一开始我选的 black 模式,配置如下。请求时,就是这样的。接下来看下源码是怎么实现的。waf 插件是前置插件,也就是在请求真正 url
摘要由CSDN通过智能技术生成

登录 soul-admin,开启 waf 插件。

官网上的这两句很重要,waf 插件源码的实现也是根据这两句话来的。

  • 当 module 设置为 black 模式的时候,只有匹配的流量才会执行拒绝策略,不匹配的,直接会跳过。
  • 当 module 设置为 mixed 模式的时候,所有的流量都会通过 waf插件,针对不同的匹配流量,用户可以设置是 拒绝,还是通过。

一开始我选的 black 模式,配置如下。

请求时,就是这样的。

接下来看下源码是怎么实现的。

waf 插件是前置插件,也就是在请求真正 url 之前进行的,在插件链上第三个执行的。执行 waf 插件时,AbstractSoulPlugin 会匹配选择器和规则,匹配成功后,在 WafPlugin 会执行 doExecute 方法。
但 waf 插件比较特殊一点是,其他插件规则匹配不成功,一般就是走下一个插件了,AbstractSoulPlugin 的 handleSelectorIsNull,handleRuleIsNull 的代码都是这么写的

	//执行下一个插件
	protected Mono<Void> handleSelectorIsNull(final String pluginName, final ServerWebExchange exchange, final SoulPluginChain chain) {
   
        return chain.execute(exchange);
    }

    protected Mono<Void> handleRuleIsNull(final String pluginName, final ServerWebExchange exchange, final SoulPluginChain chain) {
   
        return chain.execute(exchange);
    }

但 wafPlugin 重写了 handleSelectorIsNull 和 handleRuleIsNull 方法,即使匹配不到选择器和规则,只要你 waf 插件开启了,也会走到 wafPlu

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值