JavaScript中的SonarQube Regex漏洞问题

vlju58qv  于 2023-02-18  发布在  Java
关注(0)|答案(2)|浏览(161)

在JavaScript代码中使用Regex时,SonarQube会显示漏洞问题。在JavaScript中是否有Regex的替代品?

    • 正则表达式示例:**
(^(?=[A-Za-z0-9\._-]*$)(?=.*[A-Za-z0-9]).*$)
    • 错误:**

确保在这里使用正则表达式是安全的。

vddsk6oq

vddsk6oq1#

这不是真正的问题,而是一个安全警告。
您是否检查了SonarQube对错误的描述?
根据输入字符串计算正则表达式可能是一项占用大量CPU资源的任务。巧尽心思构建的正则表达式(如(a+)+s)将需要几秒钟来计算输入字符串aaaaaaaaaaaaaaaaaaaaaabs。
问题在于,每向输入中添加一个字符,计算正则表达式所需的时间就会加倍,而等效的正则表达式a+s(不分组)的计算效率是毫秒级的,并且与输入大小成线性关系。
计算此类正则表达式为正则表达式拒绝服务(ReDoS)攻击打开了大门。在Web应用程序的上下文中,攻击者可以强制Web服务器花费其所有资源来计算正则表达式,从而使真正的用户无法访问服务。
此规则标记至少包含3个字符且至少包含以下任一字符的两个示例的硬编码正则表达式的任何执行:+{.
例如:(a+)

·执行的正则表达式是否敏感,用户是否可以提供将由该正则表达式分析的字符串。·巧尽心思构建的输入和正则表达式会降低正则表达式引擎的性能。
如果您对上述任何问题的回答为“是”,您可能会面临风险。
要解决这个问题,您需要人工检查正则表达式是否有风险,如果没有,您可以将其标记为误报,否则,检查正则表达式可能是强制性的。
有关regex DoS问题的其他信息,请访问OWASP web site

0yycz8jy

0yycz8jy2#

字符串正则表达式=请求.getParameter(“正则表达式”);字符串输入=请求.getParameter(“输入”);
输入.匹配(模式.引用(正则表达式));
//符合:引号元字符或转义序列不会有特殊含义
注:-在声纳中工作

相关问题