在我们的java应用程序中,用户可以将数据导出到易于CSV Injection的excel文件。为了避免此漏洞,我想限制用户输入,例如 = HYPERLINK(E3,F3),如果任何参数以以下字符开头:
python setup .
我尝试了一些正则表达式:
Equals to ("=")
Plus ("+")
Minus ("-")
At ("@")
但是这些在bean验证中没有按预期工作。
答案 0 :(得分:0)
你只需要像这样逃避正则表达式中的特殊字符:
String csvInjectionRegex = "^[^\\+\\=@\\-]";
以下字符是需要在正则表达式中转义的字符:
<。([{!\ ^ - = $ |]})* +>
要逃避他们:
"\\"
或使用\Q
和\E
中的每个特殊字符。示例:("\\Q|\\E")
如果您有任何疑问,请使用Pattern.quote(specialString):
String csvInjectionRegex = "^[^"+Pattern.quote("+-=@")+"]";
答案 1 :(得分:0)
尝试一下:
if (value.matches("^[+=@-].*")) {
//DO M
}