gpt4 book ai didi

regex - 从文件中读取正则表达式是否安全?

转载 作者:行者123 更新时间:2023-12-04 00:05:45 25 4
gpt4 key购买 nike

假设 Perl 脚本允许用户在配置文件中指定多个文本过滤器表达式,是否有一种安全的方法让他们也输入正则表达式,而不会出现意外副作用或代码执行的可能性?无需实际解析正则表达式并检查它们是否存在有问题的构造,即。不会有任何替代,只有匹配。

顺便说一句,有没有办法在实际使用之前测试指定的正则表达式是否有效?如果出现类似 /foo (bar/ 的内容,我想发出警告被输入。

谢谢,Z。

编辑:
感谢您提供非常有趣的答案。从那以后,我发现以下危险的结构只有在 use re 'eval' 时才会在正则表达式中进行评估。使用编译指示:

(?{code})
(??{code})
${code}
@{code}

默认为 no re 'eval' ;所以除非我遗漏了什么,从文件中读取正则表达式应该是安全的,唯一的检查是 Axeman 发布的 eval/catch。至少在我的测试中我没能在其中隐藏任何邪恶的东西。

再次感谢。 Z。

最佳答案

根据您匹配的对象以及您运行的 Perl 版本,可能有一些正则表达式通过使用过多的前瞻、后视和其他断言来充当有效的拒绝服务攻击。

您最好只允许一个小的、众所周知的正则表达式模式子集,并在您和您的用户学习如何使用系统时谨慎地扩展它。就像许多博客评论系统只允许一小部分 HTML 标签一样。

如果您需要对正则表达式进行复杂的分析,最终 Parse::RecDescent 可能会变得有用。

关于regex - 从文件中读取正则表达式是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/242118/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com