WAF规则

    如果要想判断某个参数值的长度大于100,可以使用编解码的”计算长度”,规则内容如下:

    • 参数:单个URL参数值-[arg]
    • 参数名:name (比如要判断的是URL中的参数name)
    • 编解码:计算长度
    • 操作符:数值大于
    • 对比值:100

    这样当用户输入的name参数长度大于100的时候就会匹配到此规则。

    • 参数名:name (比如要判断的是URL中的参数name)
    • 编解码:BASE64Decode
    • 操作符:包含字符串
    • 对比值:HelloWorld

    这样当用户输入类似于”SGVsbG9Xb3JsZA==“的内容时,就能匹配到该规则。

    如果用户输入的内容中是经过转义的,可能会对我们的判断有所影响,比如:

    • 参数:所有URL参数组合-[args]
    • 参数名:name (比如要判断的是URL中的参数name)
    • 编解码:URLDecode
    • 操作符:正则匹配
    • 对比值:DELETE FROM

    经过解码后,上面的一段内容会被解码成:

    所以就会和我们写的正则相匹配。

    规则示例

    1. 来源不为空

    在规则集里添加的规则如下:

    • 规则:
      1. 规则1
        • 参数: 请求来源URL - [referer]
        • 操作符:
        • 对比值: a\.com|b\.c\.d\.com
        • 这里写的是你允许的域名列表
        • 要符合基本的正则表达式语法
      2. 规则2
        • 参数:
        • 操作符:字符串不等于
        • 对比值:不填留空
    • 执行动作:阻止(BLOCK)