正则表达式 – 从文件读取正则表达式是否安全?
发布时间:2020-12-14 06:28:17 所属栏目:百科 来源:网络整理
导读:假设一个允许用户在配置文件中指定多个文本过滤器表达式的Perl脚本,是否有一种安全的方式让它们输入正则表达式,而不会有意外的副作用或代码执行?没有实际解析正则表达式并检查它们是否有问题的结构,也就是说.不会有任何替代,只有匹配. 另外,有没有办法在实
假设一个允许用户在配置文件中指定多个文本过滤器表达式的Perl脚本,是否有一种安全的方式让它们输入正则表达式,而不会有意外的副作用或代码执行?没有实际解析正则表达式并检查它们是否有问题的结构,也就是说.不会有任何替代,只有匹配.
另外,有没有办法在实际使用之前测试指定的正则表达式是否有效?如果像/ foo(bar /被输入),我想发出警告. 谢谢,Z 编辑: (?{code}) (??{code}) ${code} @{code} 默认是no re’eval’;所以除非我缺少一些东西,否则从文件中读取正则表达式应该是安全的,唯一的检查是Axeman发布的eval / catch.至少我没有能够在我的测试中隐藏任何邪恶的东西. 再次感谢. Z.
根据您匹配的内容以及您正在运行的Perl版本,可能会有一些正则表达式通过使用过多的前瞻性,lookbehinds和其他断言作为有效的拒绝服务攻击.
您最好只允许一小部分,众所周知的正则表达式模式,并在您和您的用户学习如何使用系统时谨慎扩展.以同样的方式,许多博客评论系统只允许一小部分的HTML标签. 如果您需要对正则表达式进行复杂分析,最终Parse :: RecDescent可能会变得有用. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |