强化拒绝服务:正则表达式

fortify Denial of Service: Regular Expression

我正在使用拆分功能,但在 fortify 中遇到问题。

拒绝服务:正则表达式。请在下面找到示例代码。

String service = "abc"
String accessUrl= "https://www.google.com/abc/def"
String urlStringPart= accessUrl.split(service + "/")[1];

好的,看来 Fortify 已经得出结论,service 可以从某些请求参数中注入。如果 real 代码与您向我们展示的代码相同,那是不可能的。

另一方面...

如果 service 确实来自请求参数...或远程用户可以注入的其他内容...那么存在拒绝服务攻击的真正风险。问题是 split 的参数是一个正则表达式,而不仅仅是一个简单的字符串。坏人可以在那里注入任何正则表达式,包括精心设计的正则表达式以触发 catastrophic backtracking。这可能会浪费很多 CPU ...

如前所述:一种解决方法是使用 Pattern.quote(service),这样坏人就无法注入正则表达式。