【问题标题】:Java bean validation Regex to get rid of CSV InjectionJava bean验证正则表达式摆脱CSV注入
【发布时间】:2018-03-21 17:38:14
【问题描述】:

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

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

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

^[^+=@-]

^((?![+=@-]).)*

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

【问题讨论】:

  • 能否请您粘贴代码@Rajinder,说明您是如何解决问题的。我尝试了此链接中提供的所有解决方案,但仍然面临漏洞问题。

标签: java regex security bean-validation


【解决方案1】:

您只需要像这样转义正则表达式中的特殊字符:

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

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

为了逃避他们,你要么:

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

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

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

【讨论】:

  • 谢谢@arthur。这是我这边的愚蠢错误。我刚刚重新启动了服务器,它运行良好。
【解决方案2】:

试试这个:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-30
    • 2012-11-10
    • 2020-07-15
    • 1970-01-01
    • 1970-01-01
    • 2023-02-03
    • 2017-07-02
    相关资源
    最近更新 更多