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

问题描述

我正在使用拆分功能,但是在强化方面遇到了问题。

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

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),以使坏人无法注入正则表达式。