未验证 提交 4f235e9a 编写于 作者: K Kasper Timm Hansen 提交者: GitHub

Merge pull request #36537 from quadule/fix-cookie-rotation-hash-pollution

Fix cookie modification during rotation
......@@ -532,9 +532,13 @@ def deserialize(name)
if value
case
when needs_migration?(value)
self[name] = Marshal.load(value)
Marshal.load(value).tap do |v|
self[name] = { value: v }
end
when rotate
self[name] = serializer.load(value)
serializer.load(value).tap do |v|
self[name] = { value: v }
end
else
serializer.load(value)
end
......
......@@ -893,6 +893,19 @@ def test_encrypted_cookie_rotating_secret
assert_equal 45, encryptor.decrypt_and_verify(@response.cookies["foo"])
end
def test_cookie_with_hash_value_not_modified_by_rotation
@request.env["action_dispatch.signed_cookie_digest"] = "SHA256"
@request.env["action_dispatch.cookies_rotations"].rotate :signed, digest: "SHA1"
key_generator = @request.env["action_dispatch.key_generator"]
old_secret = key_generator.generate_key(@request.env["action_dispatch.signed_cookie_salt"])
old_value = ActiveSupport::MessageVerifier.new(old_secret).generate(bar: "baz")
@request.headers["Cookie"] = "foo=#{old_value}"
get :get_signed_cookie
assert_equal({ bar: "baz" }, @controller.send(:cookies).signed[:foo])
end
def test_cookie_with_all_domain_option
get :set_cookie_with_domain
assert_response :success
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册