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()方法对输入的字符串进行验证。通过这种方式,可以避免正则表达式的安全漏洞。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值