🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
openstar的使用是非常灵活的,不仅仅是单一规则的匹配,而支持多规则组方式,AND 以及 OR 方式进行规则的连接,规则匹配的位置是`request`请求的任意位置 具体规则可以匹配的位置: ``` local scheme # 协议 local uri # uri (浏览器地址 ? 前的字符串) local remoteIp # nginx 取的直连 IP (使用了realip模块后,则是从header头取的) local ip # 通过 openstar 提供的 从header头取的ip地址(目前使用 realip模块就够用了) local serverIp # 服务器ip local http_host # header 头里的 HOST local server_name # nginx 配置文件 server 字段 local hostname # 域名(准确的解析域名) local method # 请求的方法 local referer # 请求的 referer local useragent # 请求的 useragent local cookie # 请求的 cookie local request_uri # 完整的 请求地址 (uri+query_string) local query_string # GET 请求参数(浏览器地址 ? 后面的内容) local http_content_type # 请求头 类型字段 local headers # table 类型的 header(包括所有header头) local args # table 类型的 GET 请求参数 local args_data # 所有GET请求的 value 的连接字符串,连接符 , local posts # http_content_type 为 x-www-form-urlencoded POST的请求参数的table类型 local posts_data # posts 该table中所有 value 的连接字符串,连接符 , local posts_all # 完整的请求body体内容 local post_form # POST 表单时,解析后的table ``` 当然在高级规则中支持使用插件,就是说过滤代码可以自己使用`lua`进行编写,可以实现任意你想要的过滤功能,且性能上比 loadstring ,dofile 都要好,代码上没有什么大的问题,那么他的性能就不会很差 一定要看一下WAF整体的防护流程图,规则之间的优先级就是根据这个流程图而确定的,当规则配置没有达到想要的效果,一定要冷静,对比流程图看看是否是遗漏的。 ![](https://img.kancloud.cn/07/ec/07ece639e3510fab3fe9aa9dcf09840b_1664x3159.png)