gpt4 book ai didi

ruby - 使用 Ruby 测试 filepicker.io 安全性

转载 作者:太空宇宙 更新时间:2023-11-03 17:55:58 25 4
gpt4 key购买 nike

我正在尝试构建一个测试,让我能够行使 FilePicker.io 的安全性。代码运行为:

ruby test.rb [file handle]

结果是我可以附加到 FilePicker URL 的查询字符串。我很确定我的政策得到了正确的阅读,但我的签名却没有。有人可以告诉我我做错了什么吗?这是代码:

require 'rubygems'
require 'base64'
require 'cgi'
require 'openssl'
require 'json'

handle = ARGV[0]
expiry = Time::now.to_i + 3600
policy = {:handle=>handle, :expiry=>expiry, :call=>["pick","read", "stat"]}.to_json
puts policy
puts "\n"
secret = 'SECRET'
encoded_policy = CGI.escape(Base64.encode64(policy))
signature = OpenSSL::HMAC.hexdigest('sha256', secret, encoded_policy)
puts "?signature=#{signature}&policy=#{encoded_policy}"

最佳答案

诀窍是使用 Base64.urlsafe_encode64 而不是 CGI.escape:

require 'rubygems'
require 'base64'
require 'cgi'
require 'openssl'
require 'json'

handle = ARGV[0]
expiry = Time::now.to_i + 3600
policy = {:handle=>handle, :expiry=>expiry}.to_json
puts policy
puts "\n"
secret = 'SECRET'
encoded_policy = Base64.urlsafe_encode64(policy)
signature = OpenSSL::HMAC.hexdigest('sha256', secret, encoded_policy)
puts "?signature=#{signature}&policy=#{encoded_policy}"

当使用 Filepicker.io 文档中的过期时间、句柄和 secret 的示例值进行测试时,它返回与 Python 示例相同的值。

关于ruby - 使用 Ruby 测试 filepicker.io 安全性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13578526/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com