为了确保我的应用程序不容易受到这个漏洞的攻击,我正在尝试创建一个控制器测试来覆盖它。为此,我需要能够发布原始的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
当我查看参数哈希表时,token根本没有被设置,它只包含{"controller" => "user", "action" => "reset_password"}
。无论是尝试使用XML还是仅使用常规的POST数据,在所有情况下似乎都没有设置它。
我知道最近Rails存在漏洞,参数哈希表的加密方式已经更改,但是否仍有办法通过RSpec发布原始数据?我是否可以直接使用Rack::Test::Methods
?
request.env["RAW_POST_DATA"]
是有效的。 - Simon Woodside