ほとんど典型的な ./config/environment.rb ファイルはありますか?
イニシャライザと最後の「end」キーワードの直前です。YMMV。
# ./config/environment.rb
Rails::Initializer.run do |config|
...
ActiveSupport::CoreExtensions::Hash::Conversions::XML_PARSING.delete('symbol')
ActiveSupport::CoreExtensions::Hash::Conversions::XML_PARSING.delete('yaml')
end
ActiveSupport::CoreExtensions::Hash::Conversions::XML_PARSING.delete('symbol')
ActiveSupport::CoreExtensions::Hash::Conversions::XML_PARSING.delete('yaml')
動作することを確認するには、ローカルの開発サーバーを使用して rails 2.x に対してこれを実行します。
curl -i -H "Content-Type: application/xml" -X POST \
-d '<id type="yaml">--- !ruby/object:ActionController::Base bar: 1</id>' \
http://localhost:3000
ログを見てください。params[:id] がオブジェクトの場合、脆弱です。それが単なる文字列の場合、修正は機能しました。[このすべての情報を提供してくれた HackerNews ユーザーに感謝します]
パッセンジャーのプロダクションにデプロイしたとき、それは私を驚かせました。Apacheを再起動することで解決しました。Nginx で同じことを試してみてください。
これが最善の方法であるか、すべてのケースをカバーしていると100%確信しているわけではありません。ここにいる他の誰でも、これを追加または編集して支援することができます。幸運を!