java - 拒绝服务:正则表达式(输入验证和表示、数据流)
问题描述
我正在使用 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
推荐阅读
- windows - 如何使用批处理文件杀死特定的 VBScript?
- computational-geometry - 为每个点找到最近线段的高效算法
- erlang - 如何使用 gun:open 在 gen_server 模块中
- php - 删除 PHP 数组的一部分
- react-native - 如何在 react-native 中获取文件的绝对路径?
- stm32 - STM32F103 UART按键事件延迟慢
- android - 如何使用环回后端的改造在android中提出“包含过滤器”之类的请求?
- c# - 自动化 matlab 代码,但在我的 Matlab 路径上找不到函数
- javascript - 使用同一元素的另一个 href 的单个链接更改 href
- html - 在我的横幅和中心放置 2 个按钮 div