我正在实现一个直接的文件上传从客户机机器到亚马逊 S3通过 REST API 只使用 JavaScript,没有任何服务器端代码。一切都很好,但有一件事让我担心。
当我向 Amazon S3 REST API 发送请求时,我需要对请求进行签名,并将签名放入 Authentication
头文件中。要创建一个签名,我必须使用我的秘钥。但是所有的事情都发生在客户端,因此,密钥可以很容易地从页面源代码中显示出来(即使我对源代码进行了混淆/加密)。
我该怎么办?这有什么问题吗?也许我可以将特定私钥的使用限制为只能从特定 CORS Origin 调用 REST API,并且只能使用 PUT 和 POST 方法,或者也许只能将 key 链接到 S3和特定 bucket?可能还有其他的认证方法?
“无服务器”解决方案是理想的,但我可以考虑涉及一些服务器端处理,不包括上传文件到我的服务器,然后发送到 S3。