正则表达式的安全性

2024-06-14 21:06:10 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我想让用户输入任何他想要的正则表达式和一个要匹配的字符串,我将使用Python的re.compile检查它是否匹配。安全吗?有没有办法让恶意用户通过传入精心编制的字符串来崩溃或远程执行?在


Tags: 字符串用户re远程compile办法精心
1条回答
网友
1楼 · 发布于 2024-06-14 21:06:10

我不认为re.compile()会是个问题。当然,它可以抛出包含无效正则表达式的异常,但您可以很容易地捕捉到这些异常。Python正则表达式不允许代码调用(例如,与Perl不同),因此我看不到攻击者可以用来将恶意代码注入正则表达式的机制。在

但是,实际运行regex(通过re.search()等)可能是个问题,因为Python没有对catastrophic backtracking采取任何预防措施,这可能会导致regex的运行时急剧上升。在

在一个专用的进程中运行regex可能是个好主意,如果它不能在一秒钟内完成,就终止它。在

相关问题 更多 >