Per garantire che la mia applicazione non sia vulnerabile a this exploit, sto cercando di creare un test del controller in RSpec per coprirlo. Per fare ciò, devo essere in grado di pubblicare JSON raw, ma non ho trovato il modo di farlo. Nel fare alcune ricerche, ho deciso che almeno ha usato per essere un modo per farlo utilizzando l'intestazione RAW_POST_DATA
, ma questo non sembra funzionare più:POSTING di dati JSON non elaborati con Rails 3.2.11 e RSpec
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
Quando guardo l'hash params , il token non è impostato, e contiene solo { "controller" => "user", "action" => "reset_password" }
. Ottengo gli stessi risultati quando provo a usare XML, o anche quando provo a usare solo i dati dei post regolari, in tutti i casi, sembra non impostarlo.
So che con le recenti vulnerabilità di Rails, il modo in cui i parametri sono sottoposti a hash è stato modificato, ma esiste ancora un modo per pubblicare dati grezzi tramite RSpec? Posso in qualche modo utilizzare direttamente lo Rack::Test::Methods
?
Come di Rails 4.2.6, l'impostazione 'request.env [ "RAW_POST_DATA"]' in un controller spec RSpec sta lavorando per me. –