强化拒绝服务:正则表达式
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)
,这样坏人就无法注入正则表达式。
我正在使用拆分功能,但在 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)
,这样坏人就无法注入正则表达式。