正则表达式的安全性

时间:2014-08-31 10:52:42

标签: python regex security

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

1 个答案:

答案 0 :(得分:9)

我不认为re.compile()会成为一个问题。当然它可以抛出无效正则表达式的异常,但你可以很容易地捕获它们。 Python正则表达式不允许代码标注(例如,与Perl不同),因此我没有看到攻击者可以使用的机制将恶意代码注入正则表达式。

实际上运行正则表达式(通过re.search()等)可能是一个问题,因为Python没有对catastrophic backtracking采取任何可能导致正则表达式运行时的预防措施飙升。

在一个专门的流程中运行正则表达式可能是一个好主意,如果它在一秒左右内没有完成,那就杀掉它。