我正在嘗試構建一個測試,該測試將允許我執行FilePicker.io安全性。該代碼運行如下:使用Ruby測試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}"
對不起,我沒有說清楚我目前在Ruby 1.8中,所以我沒有訪問該方法的權限。我通過刪除CGI.escape和gsubbing出新行來解決了這個問題。我不確定嚴格來說這是否正確,但它確實有效。 – brokenbeatnik