Чтобы убедиться, что мое приложение не уязвимо для этого использования, я пытаюсь создать тест контроллера в 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
?