boolean match = casNo.matches(“\\d+-\\d+-\\d+$“);代码存在安全漏洞,应该如何修改

如果你可能在输入中接受任意符号,则此处 casNo.matches(“\d±\d±\d+$”) 存在安全漏洞,因为这个正则表达式只允许短横线,但是攻击者可以尝试其他符号,这可能导致正则表达式的绕过或解析错误。

为此,我们建议使用Java自带的Pattern类对正则表达式进行编译并在运行时执行错误处理,以提高安全性。具体操作如下:

Pattern pattern = Pattern.compile("^\\d+-\\d+-\\d+$");
Matcher matcher = pattern.matcher(casNo);
if(!matcher.matches()){
    InvalidCell invalidCell = createInvalidCell(importDangerousCargoInfo.getRowIndex(), 2, LocaleMessageUtils.getMessage("Exception.svl.dangerous-cargo-apply-import-check-cas-no-regular"));
    result.add(invalidCell);
}

上述修改中,使用Pattern类的compile()方法编译正则表达式,并通过matcher()方法创建Matcher对象,然后调用matches()方法对输入的字符串进行验证。通过这种方式,可以避免正则表达式的安全漏洞。

猜你喜欢

转载自blog.csdn.net/JSUITDLWXL/article/details/130926144