【问题标题】:Security of regular expressions [duplicate]正则表达式的安全性[重复]
【发布时间】:2014-08-31 10:52:41
【问题描述】:

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

【问题讨论】:

  • 作为旁注,根据您的需要,也许值得考虑一个简单的 glob 表达式,而不是成熟的正则表达式。对于大多数用户来说,它更容易理解。而且它需要更少的能量来处理。但同样,这将取决于您的需求......

标签: python regex security


【解决方案1】:

我认为re.compile() 不会成为问题。当然,它可能会抛出带有无效正则表达式的异常,但您可以轻松捕获这些异常。 Python 正则表达式不允许代码标注(例如,与 Perl 不同),所以我看不到攻击者可以用来将恶意代码注入正则表达式的机制。

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

在一个专门的进程中运行正则表达式并杀死它可能是一个好主意,如果它没有在一秒钟左右完成。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    • 2019-11-16
    • 1970-01-01
    相关资源
    最近更新 更多