私のアプリケーションがこのエクスプロイトに対して脆弱でないことを確認するために、RSpec でコントローラー テストを作成してカバーしようとしています。そのためには、生の JSON を投稿できるようにする必要がありますが、それを行う方法が見つからないようです。いくつかの調査を行った結果、少なくともヘッダーを使用してそうする方法があったことがRAW_POST_DATA
わかりましたが、これはもう機能していないようです:
it "should not be exploitable by using an integer token value" do
request.env["CONTENT_TYPE"] = "application/json"
request.env["RAW_POST_DATA"] = { token: 0 }.to_json
post :reset_password
end
params ハッシュを見ると、トークンはまったく設定されておらず、含まれているだけ{ "controller" => "user", "action" => "reset_password" }
です。XML を使用しようとした場合、または通常の投稿データを使用しようとした場合でも同じ結果が得られますが、いずれの場合も期間を設定していないようです。
最近の Rails の脆弱性により、パラメーターがハッシュされる方法が変更されたことは知っていますが、RSpec を介して生データを投稿する方法はまだありますか? どういうわけか直接使用できますRack::Test::Methods
か?