<分区>
假设我想让用户输入他想要的任何正则表达式和要匹配的字符串,我将使用 Python 的 re.compile
检查它是否匹配。那安全吗?有没有办法让恶意用户通过传入特制字符串来崩溃或远程执行?
<分区>
假设我想让用户输入他想要的任何正则表达式和要匹配的字符串,我将使用 Python 的 re.compile
检查它是否匹配。那安全吗?有没有办法让恶意用户通过传入特制字符串来崩溃或远程执行?
最佳答案
我不认为 re.compile()
会成为问题。当然,它可以抛出无效正则表达式的异常,但您可以轻松捕获这些异常。 Python 正则表达式不允许代码标注(例如,与 Perl 不同),因此我看不到攻击者可以用来将恶意代码注入(inject)正则表达式的机制。
不过,实际运行正则表达式(通过 re.search()
等)可能是个问题,因为 Python 没有针对 catastrophic backtracking 采取任何预防措施。这可能会导致正则表达式的运行时间猛增。
在专用进程中运行正则表达式可能是个好主意,如果它没有在一秒左右内完成则将其终止。
关于python - 正则表达式的安全性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25591255/