【问题标题】:Is there an equivalent to yaml.safe_load in Ruby?Ruby 中是否有与 yaml.safe_load 等价的东西?
【发布时间】:2012-12-30 04:32:32
【问题描述】:

high-profile security vulnerability in Rails 最近阐明了在 Ruby 应用程序中解析用户提供的 YAML 的潜在危险。

快速的 Google 搜索显示,Python's YAML library 包含一个 safe_load 方法,该方法只会反序列化“简单的 Python 对象,如整数或列表”,而不是任意类型的对象。

Ruby 有等价物吗?有什么方法可以在 Ruby 应用程序中安全地接受 YAML 输入,而无需手动编写自定义解析器?

【问题讨论】:

    标签: python ruby security yaml


    【解决方案1】:

    Jim's advice 之后,我继续写了safe_yaml,这是一个添加YAML.safe_load 方法并在内部使用Psych 来完成繁重工作的gem。

    【讨论】:

      【解决方案2】:

      使用Psych(实际的解析器引擎)的低级接口,可以访问低级结构,而无需将它们序列化回Ruby 对象(参见http://rubydoc.info/stdlib/psych/Psych/Parser)。这不像safe_load 那样简单,但它确实提供了实现它的途径。

      SyckPsych 中可能还有其他选项可以使用,并且更直接,例如safe_load

      【讨论】:

      • 感谢您的建议!你可以看到我按照你的建议做了,put it on GitHub.
      猜你喜欢
      • 2014-03-10
      • 1970-01-01
      • 2022-01-10
      • 2018-05-26
      • 2014-10-14
      • 2020-07-21
      • 1970-01-01
      • 2011-01-03
      • 2021-09-17
      相关资源
      最近更新 更多