我正在使用HP Fortify工具来检测我的项目的漏洞,它提供了一些容易受到DOS攻击的代码。
while reading some regular expression through some '.properties' and then trying to create a pattern by Pattern.compile(regex);
不受信任的数据将传递到应用程序并用作正则表达式。 这可能会导致线程过度消耗 CPU 资源。
查询:现在为解决方案,
- 如果我在 java 文件本身中对正则表达式进行硬编码,那么它将不再是动态的。
- 我不确定是否应该对读取的属性进行验证
谁能建议可以使用哪种针对DOS的验证?
OWASP指南中提到了它 - 您可以尝试一些控制/检查。
正则表达式拒绝服务 (ReDoS( 是一种拒绝服务攻击,它利用了大多数正则表达式实现可能达到导致它们工作非常缓慢(与输入大小呈指数级关系(的极端情况的事实。然后,攻击者可以使使用正则表达式的程序进入这些极端情况,然后挂起很长时间。
https://www.owasp.org/index.php/Regular_expression_Denial_of_Service_-_ReDoS