Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SonarQube是安全热点,使用正则表达式_Java_Spring_Sonarqube - Fatal编程技术网

Java SonarQube是安全热点,使用正则表达式

Java SonarQube是安全热点,使用正则表达式,java,spring,sonarqube,Java,Spring,Sonarqube,我在我的项目中使用SonarQube,我有“^.\+json[;]?\s$”的安全热点: return mediaType != null && (MediaType.APPLICATION_JSON.isCompatibleWith(mediaType) || mediaType.getSubtype().matches("^.*\\+json[;]?\\s*$")); } Hier

我在我的项目中使用SonarQube,我有“^.\+json[;]?\s$”的安全热点:

       return mediaType != null 
             && (MediaType.APPLICATION_JSON.isCompatibleWith(mediaType)
             || mediaType.getSubtype().matches("^.*\\+json[;]?\\s*$"));
   }
Hier是SonarQube发出的信息

使用正则表达式是安全敏感的。它在过去导致了以下漏洞:

根据输入字符串计算正则表达式可能是一项CPU非常密集的任务。巧尽心思构建的正则表达式(如(a+)+s)将需要几秒钟来计算输入字符串aaaaaaaaaaaaaaaaaaaaaabs。问题在于,每向输入中添加一个字符,计算正则表达式所需的时间就会加倍。但是,等价的正则表达式a+s(不分组)以毫秒为单位进行有效计算,并随输入大小线性扩展

计算此类正则表达式会打开正则表达式拒绝服务(ReDoS)攻击的大门。在web应用程序的上下文中,攻击者可以强制web服务器将其所有资源用于计算正则表达式,从而使真正的用户无法访问该服务

此规则标记硬编码正则表达式的任何执行,该正则表达式至少包含3个字符和以下任意字符的至少两个实例:*+{

示例:(a+)*

例外情况

对String.split(regex)和String.split(regex,limit)的调用不会引发异常,尽管它们使用了正则表达式。这些方法大部分时间用于在简单正则表达式上进行拆分,而简单正则表达式不会产生任何漏洞


为什么?我该如何解决呢?

抱歉,有点晚了,但这将有助于: