防护规则
防护规则
1 脚本编辑
1.1 从日志进行快速处理
选中需要处理的特征值,打开开关 ”快捷加入规则“,选择后点击空白处即可。
1.2 选中特征值

1.3 自动创建规则脚本

当前可以针对一下数据进行识别:
主机
HOST
网址
URL
网站来路(referrer)
REFERER
用户代理(User-Agent)
USER_AGENT
访问方法
METHOD
访问COOKIES
COOKIES
访问BODY
BODY
请求端口
PORT
访客IP
SRC_IP
访客归属国家
COUNTRY
访客归属省份
PROVINCE
访客归属城市
CITY2 界面编辑
当前操作便捷性还不是太方便使用, 推荐使用脚本方式 
3 深度学习引擎
待开发
4 功能简介
防护规则是 SamWaf 的自定义防御能力,允许你针对某个受保护网站编写灵活的拦截逻辑。规则支持两种编辑方式:手工代码编排(脚本,首选) 与 界面编排。页面顶部提示:SamWaf 防御规则,可进行脚本(首选),界面编辑。
5 规则列表
进入“防护规则”页面后,可看到已配置规则的列表。
5.1 工具栏与搜索
- 新建规则:跳转到规则编辑页新增规则。
- 批量删除:勾选多条规则后一次性删除(无选中时不可用)。
- 清空所有:清空当前条件下的全部规则(会弹出二次确认)。
- 右上角支持按 网站、规则名、规则编号 搜索,输入后点击 查询。
5.2 列表字段
| 字段 | 说明 |
|---|---|
| 网站 | 该规则生效的受保护站点 |
| 规则名 | 规则的名称 |
| 规则编号 | 规则的唯一编号(系统生成) |
| 规则版本 | 规则的版本号 |
| 规则状态 | 规则开关,已生效 / 已关闭,可在列表直接切换 |
| 更新时间 | 规则最近一次修改时间 |
| 创建时间 | 规则创建时间 |
| 操作 | 编辑、删除 |
6 规则编辑
点击 新建规则 或某条规则的 编辑 进入规则编辑页。
6.1 基本信息
| 字段 | 说明 |
|---|---|
| 规则名称 | 规则的可读名称 |
| 防护网站 | 选择规则生效的受保护站点 |
| 规则优先级 | salience 优先级数值,数值越大优先级越高 |
| 防护编排方式 | 选择 界面编排 或 手工代码编排 |
| 规则状态 | 规则开关,已生效 / 已关闭 |
6.2 界面编排
通过可视化方式逐条添加条件,无需手写脚本,适合不熟悉脚本语法的用户。
- 点击 新建 增加一个条件。
- 每个条件包含:作用域、判断、值;当判断为函数类(如包含/开头/结尾)时,还会出现 函数判断结果(true / false)。
- 多个条件之间可设置 关系:
并且(&&)/或者(||)。 - 编排过程中下方会实时显示 规则脚本内容 预览。
可选作用域包括:主机(HOST)、URL、网站来路(REFERER)、用户代理(USER_AGENT)、METHOD、访问 COOKIES、访问 BODY、请求端口(PORT)、访客 IP(SRC_IP)、访客归属国家(COUNTRY)、省份(PROVINCE)、城市(CITY),以及函数型:提取请求头某个 Key 的值 GetHeaderValue("HeaderKeyName")、获取 IP 失败次数 GetIPFailureCount(5)、判断是否安全 bot IsSafeBot()。
判断符号包括:等于(==)、不等于(!=)、大于(>)、小于(<)、大于等于(>=)、小于等于(<=),以及函数型:包含(Contains)、开头(HasPrefix)、结尾(HasSuffix)。
6.3 手工代码编排(推荐)
直接编写规则脚本,能力最完整。编辑页右侧提供 系统变量、系统判断符号、系统关系符号 参考表,左侧提供分类示例(基础示例、IP 地址判断、字符串判断、数值判断)。
基础脚本示例:
rule R80798f795d7947419ba6f593708b40d9 "禁止来自中国以外的访客访问" salience 10 {
when
MF.COUNTRY != "中国"
then
Retract("R80798f795d7947419ba6f593708b40d9");
}常用函数示例(节选自界面内置示例):
MF.GetHeaderValue("Accept").Contains("text/plain") == True判断请求头MF.GetIPFailureCount(5) > 105 分钟内失败超过 10 次RF.IPInRange(MF.SRC_IP, "172.16.0.0", "172.20.255.254") == trueIP 区间判断RF.IPInRanges(MF.SRC_IP, "10.0.0.0/8", ...) == true多网段判断RF.IPInCIDR(MF.SRC_IP, "192.168.1.0/24") == trueCIDR 判断RF.In(MF.METHOD, "GET", "POST") == true取值判断RF.ContainsAnyIgnoreCase(MF.USER_AGENT, "bot", "spider", "crawler") == true字符串包含判断RF.EndsWithAny(MF.URL, ".php", ".asp") == true后缀判断RF.IntInRange(MF.STATUS_CODE, 400, 499) == true数值区间判断
页面内提供 立即访问在线教程(含视频+AI智能体自动生成) 链接,可在线生成规则。
6.4 测试规则
编辑页底部点击 测试规则,可在不影响线上的情况下模拟一次请求来验证规则是否命中。可填写:模拟 IP、模拟 Host、模拟 URL、模拟方法、模拟 User-Agent、模拟 Referer、模拟 Header、模拟 Cookies、模拟 Body。测试结果会显示 规则匹配(会被拦截) 或 规则不匹配(不会被拦截),并展示命中的规则及解析出的归属地(国家/省份/城市)。
提示
推荐从 日志详情 里一键选择特征值自动生成防御脚本(见本页第 1 节),比手写更快更准确。
