我仅使用 JavaScript 通过 REST API 实现从客户端计算机到 Amazon S3 的直接文件上传,无需任何服务器端代码。一切正常,但有一件事让我担心......
当我向 Amazon S3 REST API 发送请求时,我需要对请求进行签名并将签名放入Authentication
标头中。要创建签名,我必须使用我的秘密密钥。但是所有事情都发生在客户端,因此,可以轻松地从页面源中泄露密钥(即使我混淆/加密了我的源)。
我该如何处理?这真的是个问题吗?也许我可以将特定私钥的使用限制为仅来自特定 CORS 源的 REST API 调用以及仅 PUT 和 POST 方法,或者仅将链接密钥链接到 S3 和特定存储桶?可能还有其他身份验证方法吗?
“无服务器”解决方案是理想的,但我可以考虑涉及一些服务器端处理,不包括将文件上传到我的服务器然后发送到 S3。