Java bean验证正则表达式摆脱CSV注入

时间:2018-03-21 17:38:15

标签: java regex security bean-validation

在我们的java应用程序中,用户可以将数据导出到易于CSV Injection的excel文件。为了避免此漏洞,我想限制用户输入,例如 = HYPERLINK(E3,F3),如果任何参数以以下字符开头:

python setup .

我尝试了一些正则表达式:

Equals to ("=")
Plus ("+")
Minus ("-")
At ("@") 

但是这些在bean验证中没有按预期工作。

2 个答案:

答案 0 :(得分:0)

你只需要像这样逃避正则表达式中的特殊字符:

String csvInjectionRegex = "^[^\\+\\=@\\-]";

以下字符是需要在正则表达式中转义的字符:

<。([{!\ ^ - = $ |]})* +>

要逃避他们:

  • 使用反斜杠"\\"
  • 或使用\Q\E中的每个特殊字符。示例:("\\Q|\\E")

  • 如果您有任何疑问,请使用Pattern.quote(specialString):

String csvInjectionRegex = "^[^"+Pattern.quote("+-=@")+"]";

答案 1 :(得分:0)

尝试一下:

  if (value.matches("^[+=@-].*")) {
      //DO M
  }