为了确保我的应用程序不易受到此攻击,我尝试在RSpec中创建一个控制器测试来覆盖它。为了做到这一点,我需要能够发布原始JSON,但我似乎还没有找到这样做的方法。在做一些研究时,我已经确定至少过去有一种方法可以使用RAW\u POST\u DATA标题来实现这一点,但这似乎不再有效:
它“不应通过使用整型令牌值”do来利用
request.env[“CONTENT_TYPE”]=“application/json”
request.env[“RAW_POST_DATA”]={token:0}.to_json
post:重置密码
终止
当我查看params散列时,令牌根本没有设置,它只包含{“controller”=>;“user”,“action”=>;“reset_password”}。我在尝试使用XML时得到了相同的结果,甚至在尝试仅使用常规post数据时也得到了相同的结果,在所有情况下,它似乎都没有设置周期
我知道最近Rails的漏洞改变了参数散列的方式,但是仍然有办法通过RSpec发布原始数据吗?我是否可以直接使用Rack::Test::Methods
据我所知,在控制器规范中不再可能发送原始POST数据。但是,在请求规范中,发送原始POST数据非常容易:
描述“示例”:type=>;:请求做
params={token:0}
post“/user/reset_password”,参数为_json,{'CONTENT_TYPE'=>;'application/json','ACCEPT'=>;'application/json'}
#=>;参数包含{“控制器”=>;“用户”、“操作”=>;“重置密码”、“令牌”=>;0}
终止