爲了確保我的應用程序不易受到this exploit的攻擊,我試圖在RSpec中創建一個控制器測試來覆蓋它。爲了做到這一點,我需要能夠發佈原始的JSON,但我似乎沒有找到辦法做到這一點。在做一些研究,我確定有至少曾經是一個辦法做到這一點使用RAW_POST_DATA
頭,但是這似乎並沒有工作了:使用Rails 3.2.11和RSpec發佈原始JSON數據
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
?
鐵軌4.2.6的,設置'request.env [ 「RAW_POST_DATA」]'在一個RSpec控制器規格爲我工作。 – 2017-06-22 06:04:29