🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## 简介 该页面主要是配置一些常见位置的防护规则,如useragent,referer,uri等等,是一些普通的防护规则配置 ## 入口 ![](https://img.kancloud.cn/7f/e7/7fe7ff5454630a8fe04f3b50a6a7b4ad_899x813.png) ## 主界面 ![](https://img.kancloud.cn/b0/00/b000e319b6076021bc47ed549dcbdb44_1002x609.png) 这里的一些按钮是对应选中的规则 tab 的(`referer` `uri` `header` `useragent` `cookie` `args_data` `post_data`) 凡是出现上移、下移...配置规则优先级的规则组,共性都是一样的,规则的顺序修改后,一定要 **应用** ,然后在 **保存** * 规则开关 对应选中规则 tab 的全局防护开关,截图的例子规则开关就代表 referer 配置规则的总开关,当总开关关闭时,对应的这一组规则将都不会生效! * 添加规则 添加一条规则(对应选中规则 tab 的规则组)具体到某个规则模块,下文会详细介绍 * 应用 对应规则组调整组内规则之间的顺序时,需要应用该按钮后,才会生效 * 保存 保存对应规则组的配置从内存中保存到本地的json配置文件中,一般规则有变动后,需要保存,否则重启后规则将会丢失(Slave会自动保存到本地磁盘) * 规则 tab 页 展示对应规则组的规则列表 * 删除:删除对应规则模块中对应规则id * 编辑:编辑对应规则模块中对应规则id 同添加雷同,具体看下文对 添加规则 的说明 ## referer(referer_Mod) 在WAF的过滤流程中,referer的过滤是在第6步的 先看一个 `referer` 模块规则添加的界面 ![](https://img.kancloud.cn/51/69/51694bfe8c50e2194531884bd6c1ab6c_736x400.png) * des:对该条规则的人为描述,方便规则的管理和认知 * state:控制该条规则是否开启 * waf:owasp标记 * action:执行动作 `deny` 拦截,`allow` 放行(后续规则都跳过),`log` 仅记录(后续规则继续) * hostname、uri、referer 第一个参数:匹配的内容 第二个参数:匹配的方法(匹配符) 【参考匹配方式】 第三个参数:取反标记 ## uri(uri_Mod) 在WAF的过滤流程中,uri的过滤是在第7步的 先看一个`uri`模块规则添加的界面 ![](https://img.kancloud.cn/e6/36/e636facbb33ba25020017c4de38b0b34_754x397.png) * des:对该条规则的人为描述,方便规则的管理和认知 * state:控制该条规则是否开启 * waf:owasp标记(可以没有) * action:执行动作 `deny` 拦截,`allow` 放行(后续规则都跳过),`log` 仅记录(后续规则继续) * hostname、uri 第一个参数:匹配的内容 第二个参数:匹配的方法(匹配符) 【参考匹配方式】 第三个参数:取反标记 ## header(header_Mod) 在WAF的过滤流程中,header的过滤是在第8步的 先看一个`header`模块规则添加的界面 ![](https://img.kancloud.cn/9e/73/9e7367cb16b9b5a87f499de446f8f418_730x427.png) * des:对该条规则的人为描述,方便规则的管理和认知 * state:控制该条规则是否开启 * waf:owasp标记(可以没有) * action:执行动作 `deny` 拦截,`allow` 放行(后续规则都跳过),`log` 仅记录(后续规则继续) * hostname、uri 第一个参数:匹配的内容 第二个参数:匹配的方法(匹配符) 【参考匹配方式】 第三个参数:取反标记 * header: 第一个参数:匹配的内容 第二个参数:匹配的方法(匹配符) 【参考匹配方式】 第三个参数:[匹配的header头名称,匹配的位置(可以没有,默认是:end) ] 因为`header`头中有好几个key,这里配置就是key的名称,其实当`header`头出现2个一样的头时,我们的WAF取哪个呢?,这里的位置就是为了解决这个问题的。 any:`value`的任意位置(数组中的每一个都需要进行规则匹配,顺序的从前到后,其中又一个满足时,后面的就不会匹配了) end:不管`value`数组有几个,只取最后一个作为匹配的字符串【默认】 ## useragent(useragent_Mod) 在WAF的过滤流程中,useragent的过滤是在第9步的 先看一个`useragent`模块规则添加的界面 ![](https://img.kancloud.cn/7a/a6/7aa6b165be80b1870d1e4c65a2110745_758x450.png) * des:对该条规则的人为描述,方便规则的管理和认知 * state:控制该条规则是否开启 * waf:owasp标记(可以没有) * action:执行动作 `deny` 拦截,`allow` 放行(后续规则都跳过),`log` 仅记录(后续规则继续) * hostname、useragent 第一个参数:匹配的内容 第二个参数:匹配的方法(匹配符) 【参考匹配方式】 第三个参数:取反标记 ## cookie(cookie_Mod) 在WAF的过滤流程中,cookie的过滤是在第10步的 先看一个`cookie`模块规则添加的界面 ![](https://img.kancloud.cn/b0/a0/b0a0a6933b214a0388a7ab959e3161dc_761x443.png) * des:对该条规则的人为描述,方便规则的管理和认知 * state:控制该条规则是否开启 * waf:owasp标记(可以没有) * action:执行动作 `deny` 拦截,`allow` 放行(后续规则都跳过),`log` 仅记录(后续规则继续) * hostname、cookie 第一个参数:匹配的内容 第二个参数:匹配的方法(匹配符) 【参考匹配方式】 第三个参数:取反标记 ## args(args_Mod) 在WAF的过滤流程中,args的过滤是在第11步的 该模块有一个`HPP`的开关,看一下界面截图,这里是控制是否开启query_string中参数污染问题 ![](https://img.kancloud.cn/ef/c0/efc07f63bae3bf622e1f59f94434bcd1_964x372.png) 先看一个`args`模块规则添加的界面 ![](https://img.kancloud.cn/b3/3d/b33d367318c09841e53912814f6e8b80_743x416.png) * des:对该条规则的人为描述,方便规则的管理和认知 * state:控制该条规则是否开启 * waf:owasp标记(可以没有) * action:执行动作 `deny` 拦截,`allow` 放行(后续规则都跳过),`log` 仅记录(后续规则继续) * hostname、args 第一个参数:匹配的内容 第二个参数:匹配的方法(匹配符) 【参考匹配方式】 第三个参数:取反标记 ## post (post_Mod) 在WAF的过滤流程中,post的过滤是在第12步的 该模块有一个`HPP`的开关,看一下界面截图,这里是控制POST请求时参数污染问题(仅对 `Content-Type:application/x-www-form-urlencoded`)生效!!! ![](https://img.kancloud.cn/ec/e2/ece2b889c102d5d6191b284ff0feb278_950x437.png) 先看一个`post`模块规则添加的界面 ![](https://img.kancloud.cn/f5/77/f57716acf13c67cdc07b249f58ce0d30_737x356.png) * des:对该条规则的人为描述,方便规则的管理和认知 * state:控制该条规则是否开启 * waf:owasp标记(可以没有) * action:执行动作 `deny` 拦截,`allow` 放行(后续规则都跳过),`log` 仅记录(后续规则继续) * hostname、post 第一个参数:匹配的内容 第二个参数:匹配的方法(匹配符) 【参考匹配方式】 第三个参数:取反标记 ## 后记 这里仅是对界面和对应的按钮功能进行了说明,具体如何添加一个有意义的规则,后面会专门说明,会以举例子,类似问答方式进行讲解