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

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

发布时间:2020-12-15 21:50:20 所属栏目:大数据 来源:网络整理
导读: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 us
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实现任何类型的公共网络服务是不可能的吗?

我问这个是因为其中一个参考用例是Marpa HTML parser,而且使用HTML解析器似乎是矛盾的,虽然大约99,99%的HTML可能被污染,但它不能与污染数据一起使用.

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

解决方法

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

特别是,解析不需要的输入可能是一个主要的安全问题 – 对于传统的解析器,您通常不会知道您要通过的所有内容.测试套件很少检查是否确实接受了应该是错误的输入. Marpa完全解析了其规范中的语言 – 没有更多,仅此而已.

为什么关于污点模式的恐慌语言呢?在最常见的情况下,Marpa可以被视为一种编程语言,并且具有完全相同的安全性问题.根据定义,允许用户执行任意代码是不安全的,这正是C,Perl,Marpa等通过设计所做的事情.您不能为不受信任的用户提供通用语言界面.这对C,Python等来说很明显,但我认为有人可能会在Marpa的情况下忽略它.因此恐吓语言.

Marpa比竞争技术更安全.但是,在最一般的情况下,这不够安全.

(编辑:李大同)

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

    推荐文章
      热点阅读