4

最近、Railsのかなり注目を集めたセキュリティの脆弱性により、Ruby アプリケーションでユーザーが指定した YAML を解析することの潜在的な危険性が明らかになりました。

Google で簡単に検索すると、Python の YAML ライブラリsafe_loadには、任意の型のオブジェクトではなく、「整数やリストなどの単純な Python オブジェクト」のみを逆シリアル化するメソッドが含まれていることがわかります。

Rubyには同等のものがありますか? カスタムパーサーを手書きせずにRubyアプリケーションでYAML入力を安全に受け入れる方法はありますか?

4

2 に答える 2

6

Jim のアドバイスに従って、私はsafe_yamlを作成YAML.safe_loadしました。

于 2013-01-17T14:49:55.400 に答える
4

(実際のパーサー エンジン)への下位レベルのインターフェイスを使用するPsychと、Ruby オブジェクトにシリアル化せずに下位レベルの構造にアクセスできます ( http://rubydoc.info/stdlib/psych/Psych/Parserを参照)。これは ほど簡単ではありませんsafe_loadが、それを行うためのルートを提供します。

と で機能する他のオプションがありSyckPsychなどのより直接的なものがありsafe_loadます。

于 2013-01-15T23:14:38.587 に答える