mirror of
https://github.com/basecamp/once-campfire.git
synced 2026-10-26 15:46:47 +09:00
Use urlsafe base64 decode
This commit is contained in:
1 parent
bebe518c74
commit
4d04f9beee
2 files changed
+2
-2
No files matched your search
@@ -20,7 +20,7 @@ ActiveSupport.on_load(:action_text_content) do
|
|||||||
# Rails 7 used an older format of GID that serialized the payload using Marshall
|
# Rails 7 used an older format of GID that serialized the payload using Marshall
|
||||||
# Since we intentionally skip signature verification, we can't safely unmarshal the data
|
# Since we intentionally skip signature verification, we can't safely unmarshal the data
|
||||||
# To work around this, we manually extract the GID from the marshaled data
|
# To work around this, we manually extract the GID from the marshaled data
|
||||||
Base64.strict_decode64(data).match(%r{(gid://campfire/[^/]+/\d+)})&.to_s
|
Base64.urlsafe_decode64(data).match(%r{(gid://campfire/[^/]+/\d+)})&.to_s
|
||||||
else
|
else
|
||||||
nil
|
nil
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ class ActionText::AttachmentTest < ActiveSupport::TestCase
|
|||||||
|
|
||||||
test "from_node with a Rails 7 SGID" do
|
test "from_node with a Rails 7 SGID" do
|
||||||
gid = @user.to_gid.to_s
|
gid = @user.to_gid.to_s
|
||||||
marshaled_gid = Base64.strict_encode64(Marshal.dump(gid))
|
marshaled_gid = Base64.urlsafe_encode64(Marshal.dump(gid))
|
||||||
rails7_payload = { "_rails" => { "message" => marshaled_gid, "exp" => nil, "pur" => "attachable" } }
|
rails7_payload = { "_rails" => { "message" => marshaled_gid, "exp" => nil, "pur" => "attachable" } }
|
||||||
rails7_message = Base64.strict_encode64(JSON.generate(rails7_payload))
|
rails7_message = Base64.strict_encode64(JSON.generate(rails7_payload))
|
||||||
rails7_sgid = "#{rails7_message}--invalidsignature"
|
rails7_sgid = "#{rails7_message}--invalidsignature"
|
||||||
|
|||||||
Reference in new issue
Block a user