当前位置: 首页 > 知识库问答 >
问题:

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

上官凯泽
2023-03-14

我在我的项目中使用SonarQube,并且我有“^.\json[;]”的安全热点?\新加坡元:

       return mediaType != null 
             && (MediaType.APPLICATION_JSON.isCompatibleWith(mediaType)
             || mediaType.getSubtype().matches("^.*\\+json[;]?\\s*$"));
   }

Hier是SonarQube发出的信息,

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

CVE-2017-16021

CVE-2018-13863

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

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

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

示例:(a)*

例外情况

调用字符串。拆分(正则表达式)和字符串。split(regex,limit)不会引发异常,尽管它们使用了正则表达式。这些方法在大多数情况下用于在简单正则表达式上拆分,而这些正则表达式不会产生任何漏洞。

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

共有1个答案

方茂
2023-03-14

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

 类似资料:
  • 行动时刻 - 使用正则表达式 Unlang允许在条件检查中进行正则表达式计算。这些通常是Posix正则表达式。运算符=〜和!〜与正则表达式相关联。为了简单的概念证明,我们将修改上一个练习: 1.编辑FreeRADIUS配置目录下的sites-available / default虚拟服务器,并在该部分顶部的post-auth部分中添加以下内容: if(request:Framed-Protocol

  • sorter: "${$(...props)=>{timeSort(createTime)}$}$", ..$}$"."${$.. 希望结果 :sorter: (...props)=>{timeSort(createTime)}, ..$}$"."${$.. 规则: "${$ 和 $}$" 是一对,将他们替换为空。

  • 我有一个环境。ts文件如下所示: SonarQube是这一行的givng安全热点:,我不确定问题/解决方案是什么。我需要一些帮助。 谢谢

  • 本文向大家介绍最全的常用正则表达式大全,包括了最全的常用正则表达式大全的使用技巧和注意事项,需要的朋友参考一下 很多不太懂正则的朋友,在遇到需要用正则校验数据时,往往是在网上去找很久,结果找来的还是不很符合要求。所以我最近把开发中常用的一些正则表达式整理了一下,包括校验数字、字符、一些特殊的需求等等。给自己留个底,也给朋友们做个参考。 一、校验数字的表达式 数字:^[0-9]*$ n位的数字:^\

  • 我知道除了扫描预定义的< code >原语类型,我还可以扫描自己的用户定义模式,这在扫描更复杂的数据时很有帮助。我说的是< code > scanner . next(String pattern)方法。然而,在我读过的关于Java的书中,有一段说 “使用正则表达式进行扫描时有一个警告。该模式仅与下一个输入令牌匹配,因此,如果您的模式包含分隔符,则永远不会匹配。 我不太明白这是什么意思,在哪些情况

  • 问题内容: 因此,我对 正则表达式 完全 陌生 ,并且正在尝试使用Java 来查找输入字符串中的标点符号。我不知道会提前得到哪种标点符号,只是(1)!,?,。,…都是有效的标点符号,以及(2)“ <”和“>”表示特殊含义,并且不算作标点符号。该程序本身会伪随机地构建短语,我想在它经历随机过程之前先删除句子结尾处的标点符号。 我可以用任何标点符号匹配整个单词,但匹配器只为我提供该单词的索引。换一种说