升级ESAPI至2.5.2.0后isValidInput失效,ParameterStandard缺失咨询
ESAPI 2.5.2.0 中"ParameterStandard"规则缺失问题解答
规则缺失原因
ESAPI从2.2.3.1迭代到2.5.2.0时,对默认验证规则集做了重构和精简。旧版本里的ParameterStandard属于历史遗留的自定义规则模板,新版本因规范调整、规则合并或使用率偏低等原因,将其从默认配置文件中移除了。
修复方案
方案1:恢复旧规则到新配置文件
找到你原2.2.3.1版本validation.properties中ParameterStandard的具体定义(通常是类似如下的正则配置):
Validator.ParameterStandard=^[a-zA-Z0-9\\-\\._]*$
把这段配置直接添加到2.5.2.0版本的validation.properties文件末尾,保存后重启应用。原代码中的isValidInput调用就能正常匹配该规则,返回true。
方案2:替换为新版本等效默认规则
查看2.5.2.0版本validation.properties里的现有规则,选一个和原ParameterStandard验证逻辑匹配的默认规则。比如:
- 若原规则是验证通用安全字符串,可替换为
SafeString规则 - 若原规则是验证数字字母组合,可使用
Alphanumeric规则
修改代码中的调用参数:
ESAPI.validator().isValidInput("Parameter_Value_Default", value, "SafeString", MAX_PARAMTER_VALUE_LENGTH, true);
方案3:自定义新的验证规则
在2.5.2.0的validation.properties里定义自己的规则,例如:
Validator.MyParameterStandard=^[a-zA-Z0-9\\-\\._@]*$
然后在代码中调用这个自定义规则:
ESAPI.validator().isValidInput("Parameter_Value_Default", value, "MyParameterStandard", MAX_PARAMTER_VALUE_LENGTH, true);
注意:修改配置文件后,要确保文件放在类路径的正确位置,且应用已重新加载配置。
内容的提问来源于stack exchange,提问作者boris
相关产品推荐
相关产品推荐

