0
我在讀下面的教程:S3上傳圖像文件的安全問題
https://devcenter.heroku.com/articles/s3-upload-node#uploading-directly-to-s3
第一步是當用戶選擇圖像
function s3_upload(){
var s3upload = new S3Upload({
file_dom_selector: '#files',
s3_sign_put_url: '/sign_s3',
onProgress: function(percent, message) {
// some code
},
onFinishS3Put: function(public_url) {
// some cde
},
onError: function(status) {
// somecode
}
});
}
現在s3_sign_put_url指的是服務器端功能返回
app.get('/sign_s3', function(req, res){
...
// calculates signature (signature variable)
// sets expiration time (expires variable)
var credentials = {
signed_request: url+"?AWSAccessKeyId="+AWS_ACCESS_KEY+"&Expires="+expires+"&Signature="+signature,
url: url
};
...
}
如果我已經根據(AWS_SECRET_KEY)函數計算了簽名,如下所示:
var signature = crypto.createHmac('sha1', AWS_SECRET_KEY).update(put_request).digest('base64');
signature = encodeURIComponent(signature.trim());
signature = signature.replace('%2B','+');
問題: 爲什麼我必須通過AWS_SECRET_KEY值作爲憑據對象由s3_sign函數返回的一部分嗎?爲什麼不是簽名足以被退回?是不是這是一個安全問題?