为了确保我的应用程序不受此漏洞利用的影响,我试图在 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
当我查看参数哈希时,根本没有设置令牌,它只包含{ "controller" => "user", "action" => "reset_password" }
. 在尝试使用 XML 时,甚至在尝试仅使用常规发布数据时,我得到相同的结果,在所有情况下,它似乎都没有设置它。
我知道随着最近的 Rails 漏洞,散列参数的方式发生了变化,但是还有办法通过 RSpec 发布原始数据吗?我可以以某种方式直接使用Rack::Test::Methods
吗?