[waf]支持包含二进制、不支持二进制等操作符;支持对参数值编解码

This commit is contained in:
GoEdgeLab
2020-11-21 20:43:52 +08:00
parent 84156e31d6
commit 42bd61a1b2
2 changed files with 23 additions and 2 deletions

View File

@@ -92,6 +92,16 @@ func (this *HTTPFirewallRuleDAO) ComposeFirewallRule(ruleId int64) (*firewallcon
config.Id = int64(rule.Id) config.Id = int64(rule.Id)
config.IsOn = rule.IsOn == 1 config.IsOn = rule.IsOn == 1
config.Param = rule.Param config.Param = rule.Param
paramFilters := []*firewallconfigs.ParamFilter{}
if IsNotNull(rule.ParamFilters) {
err = json.Unmarshal([]byte(rule.ParamFilters), &paramFilters)
if err != nil {
return nil, err
}
}
config.ParamFilters = paramFilters
config.Operator = rule.Operator config.Operator = rule.Operator
config.Value = rule.Value config.Value = rule.Value
config.IsCaseInsensitive = rule.IsCaseInsensitive == 1 config.IsCaseInsensitive = rule.IsCaseInsensitive == 1
@@ -118,6 +128,17 @@ func (this *HTTPFirewallRuleDAO) CreateOrUpdateRuleFromConfig(ruleConfig *firewa
op.IsOn = ruleConfig.IsOn op.IsOn = ruleConfig.IsOn
op.Description = ruleConfig.Description op.Description = ruleConfig.Description
op.Param = ruleConfig.Param op.Param = ruleConfig.Param
if len(ruleConfig.ParamFilters) == 0 {
op.ParamFilters = "[]"
} else {
paramFilters, err := json.Marshal(ruleConfig.ParamFilters)
if err != nil {
return 0, err
}
op.ParamFilters = paramFilters
}
op.Value = ruleConfig.Value op.Value = ruleConfig.Value
op.IsCaseInsensitive = ruleConfig.IsCaseInsensitive op.IsCaseInsensitive = ruleConfig.IsCaseInsensitive
op.Operator = ruleConfig.Operator op.Operator = ruleConfig.Operator

View File

@@ -6,7 +6,7 @@ type HTTPFirewallRule struct {
IsOn uint8 `field:"isOn"` // 是否启用 IsOn uint8 `field:"isOn"` // 是否启用
Description string `field:"description"` // 说明 Description string `field:"description"` // 说明
Param string `field:"param"` // 参数 Param string `field:"param"` // 参数
Filters string `field:"filters"` // 处理器 ParamFilters string `field:"paramFilters"` // 处理器
Operator string `field:"operator"` // 操作符 Operator string `field:"operator"` // 操作符
Value string `field:"value"` // 对比值 Value string `field:"value"` // 对比值
IsCaseInsensitive uint8 `field:"isCaseInsensitive"` // 是否大小写不敏感 IsCaseInsensitive uint8 `field:"isCaseInsensitive"` // 是否大小写不敏感
@@ -22,7 +22,7 @@ type HTTPFirewallRuleOperator struct {
IsOn interface{} // 是否启用 IsOn interface{} // 是否启用
Description interface{} // 说明 Description interface{} // 说明
Param interface{} // 参数 Param interface{} // 参数
Filters interface{} // 处理器 ParamFilters interface{} // 处理器
Operator interface{} // 操作符 Operator interface{} // 操作符
Value interface{} // 对比值 Value interface{} // 对比值
IsCaseInsensitive interface{} // 是否大小写不敏感 IsCaseInsensitive interface{} // 是否大小写不敏感