2024-06-14 21:06:10 发布
网友
假设我想让用户输入任何他想要的正则表达式和一个要匹配的字符串,我将使用Python的re.compile检查它是否匹配。安全吗?有没有办法让恶意用户通过传入精心编制的字符串来崩溃或远程执行?在
re.compile
我不认为re.compile()会是个问题。当然,它可以抛出包含无效正则表达式的异常,但您可以很容易地捕捉到这些异常。Python正则表达式不允许代码调用(例如,与Perl不同),因此我看不到攻击者可以用来将恶意代码注入正则表达式的机制。在
re.compile()
但是,实际运行regex(通过re.search()等)可能是个问题,因为Python没有对catastrophic backtracking采取任何预防措施,这可能会导致regex的运行时急剧上升。在
re.search()
在一个专用的进程中运行regex可能是个好主意,如果它不能在一秒钟内完成,就终止它。在
我不认为
re.compile()
会是个问题。当然,它可以抛出包含无效正则表达式的异常,但您可以很容易地捕捉到这些异常。Python正则表达式不允许代码调用(例如,与Perl不同),因此我看不到攻击者可以用来将恶意代码注入正则表达式的机制。在但是,实际运行regex(通过
re.search()
等)可能是个问题,因为Python没有对catastrophic backtracking采取任何预防措施,这可能会导致regex的运行时急剧上升。在在一个专用的进程中运行regex可能是个好主意,如果它不能在一秒钟内完成,就终止它。在
相关问题 更多 >
编程相关推荐