gpt4 book ai didi

perl - 是否可以将 Perl 的 Marpa 解析器用于公共(public)网络服务器?

转载 作者:行者123 更新时间:2023-12-04 07:52:05 24 4
gpt4 key购买 nike

Perl 的 Marpa 的文档解析器包含以下关于 tainted data 的部分:

Marpa::R2 exists to allow its input to alter execution in flexible and powerful ways. Marpa should not be used with untrusted input. In Perl' s taint mode, it is a fatal error to use Marpa's SLIF interface with a tainted grammar, a tainted input string, or tainted token values.



我不确定,如果我了解此限制的后果。我明白,语法一定不能被污染。但我不明白输入一定不能被污染。对我来说,验证输入是解析器的任务。对我来说,解析器必须信任它的输入听起来不合理。

真的是这样吗?用 Marpa 实现任何一种公共(public)网络服务是不可能的吗?

我问这个是因为其中一个引用用例是 Marpa HTML parser在我看来,使用 HTML 解析器是矛盾的,尽管大约 99.99% 的 HTML 可能被污染,但它不能与受污染的数据一起使用。

任何人都可以解释这个矛盾吗?

最佳答案

Marpa 实际上比其他解析器更安全,因为它解析的语言正是 BNF 指定的语言。使用正则表达式、PEG 等,很难确定实际解析的是哪种语言。在实践中,程序员倾向于让一些测试用例工作,然后放弃。

特别是,对不需要的输入的解析可能是一个主要的安全问题——使用传统的解析器,您通常不知道您让通过的所有内容。很少有测试套件检查是否确实接受了应该是错误的输入。 Marpa 准确地解析了规范中的语言——不多也不少。

那么为什么要使用关于污点模式的可怕语言呢?在最普遍的情况下,Marpa 可以被视为一种编程语言,并且具有完全相同的安全问题。允许用户执行任意代码在定义上是不安全的,而这正是 C、Perl、Marpa 等的设计。您不能为不受信任的用户提供通用语言界面。这对于 C、Python 等来说是很清楚的,但我认为在 Marpa 的情况下有人可能会忽略它。因此,恐吓语言。

恕我直言,Marpa 比竞争技术更安全。但是,在最一般的情况下,这还不够安全。

关于perl - 是否可以将 Perl 的 Marpa 解析器用于公共(public)网络服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33630324/

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