我跟着this文章介紹如何直接從瀏覽器上傳圖片到AWS S3服務器。AWS S3瀏覽器上傳防止簽名劫持
當測試Ruby的實現時,我意識到HTML表單輸入中的簽名仍然保持不變,從一個請求到另一個請求。
require 'base64'
require 'openssl'
require 'digest/sha1'
policy_document = 'sample policy_document'
aws_secret_key = 'sample aws_secret_key'
policy = Base64.encode64(policy_document).gsub("\n","")
signature = Base64.encode64(
OpenSSL::HMAC.digest(
OpenSSL::Digest::Digest.new('sha1'),
aws_secret_key, policy)
).gsub("\n","")
puts policy
puts signature
如果不是唯一的,我們如何防止用戶通過任意方式從終端上傳圖片來劫持我們的AWS S3服務器?