加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式 – 从文件读取正则表达式是否安全?

发布时间:2020-12-14 06:28:17 所属栏目:百科 来源:网络整理
导读:假设一个允许用户在配置文件中指定多个文本过滤器表达式的Perl脚本,是否有一种安全的方式让它们输入正则表达式,而不会有意外的副作用或代码执行?没有实际解析正则表达式并检查它们是否有问题的结构,也就是说.不会有任何替代,只有匹配. 另外,有没有办法在实
假设一个允许用户在配置文件中指定多个文本过滤器表达式的Perl脚本,是否有一种安全的方式让它们输入正则表达式,而不会有意外的副作用或代码执行?没有实际解析正则表达式并检查它们是否有问题的结构,也就是说.不会有任何替代,只有匹配.

另外,有没有办法在实际使用之前测试指定的正则表达式是否有效?如果像/ foo(bar /被输入),我想发出警告.

谢谢,Z

编辑:
感谢非常有趣的答案.我已经发现,如果使用re’eval’pragma,以下危险的结构将仅在正则表达式中进行评估:

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

默认是no re’eval’;所以除非我缺少一些东西,否则从文件中读取正则表达式应该是安全的,唯一的检查是Axeman发布的eval / catch.至少我没有能够在我的测试中隐藏任何邪恶的东西.

再次感谢. Z.

根据您匹配的内容以及您正在运行的Perl版本,可能会有一些正则表达式通过使用过多的前瞻性,lookbehinds和其他断言作为有效的拒绝服务攻击.

您最好只允许一小部分,众所周知的正则表达式模式,并在您和您的用户学习如何使用系统时谨慎扩展.以同样的方式,许多博客评论系统只允许一小部分的HTML标签.

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读