python - 正则表达式的安全性

标签 python regex security

<分区>

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

最佳答案

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

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

在专用进程中运行正则表达式可能是个好主意,如果它没有在一秒左右内完成则将其终止。

关于python - 正则表达式的安全性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25591255/

相关文章:

python - 如何使用 tf.data.Dataset api 训练 keras.concatenate 模型?

javascript - 当不同的链接包含相同的词时,用链接替换词

javascript - 为什么在正则表达式中以某种方式忽略了 sub 之后的第一个字符?

mysql - 如何只允许通过存储过程插入?

python - 如何按列添加矩阵和向量?

python - 如何在 PythonMagick 中进行重心组合

python - 如何在 Python 中使用 PIL 将图像合成到另一个图像上?

regex - 在 Vim 中搜索/替换

php - file_get_contents() 和 Curl

security - 自定义 Glassfish 安全领域不起作用(无法找到 LoginModule)