我在我的项目中使用SonarQube,我有SonarQube的安全热点
return mediaType != null
&& (MediaType.APPLICATION_JSON.isCompatibleWith(mediaType)
|| mediaType.getSubtype().matches("^.*\\+json[;]?\\s*$"));
}这是来自SonarQube的消息,
使用正则表达式是安全敏感的。它在过去导致了以下弱点:
CVE-2017-16021
CVE-2018-13863
根据输入字符串计算正则表达式可能是一项极其密集的CPU任务。巧尽心思构建的正则表达式(如(a+)+s )将花费几秒钟时间计算输入字符串aaaaaaaaaaaaaaaaaaaaaaaaaaaaabs。问题是,在输入中每增加一个字符,计算正则表达式所需的时间就会加倍。但是,等效的正则表达式a+s (不进行分组)是以毫秒为单位有效计算的,并且与输入大小成线性关系。
评估这些正则表达式将为正则表达式拒绝服务(ReDoS)攻击打开大门。在web应用程序的上下文中,攻击者可以迫使web服务器将其所有资源用于评估正则表达式,从而使真正的用户无法访问该服务。
此规则标记硬编码正则表达式的任何执行,该表达式至少具有3个字符和至少两个以下字符的实例:*+{。
示例:(a+)*
例外情况
对String.split(regex)和String.split(regex,极限)的调用将不会引发异常,尽管它们使用了正则表达式。这些方法大部分时间用于拆分简单的正则表达式,这些正则表达式不会产生任何漏洞。
为什么?,我该怎么解决呢?
发布于 2020-12-15 22:50:08
对不起,有点晚了,但这会有帮助的:

https://stackoverflow.com/questions/62621417
复制相似问题