Amazon S3-访问预签名URL

时间:2018-08-07 06:28:39

标签: javascript amazon-web-services amazon-s3

我已经生成了一个预签名的s3网址。尝试从JS代码访问它时,出现错误“请求的资源上没有'Access-Control-Allow-Origin'标头”,并且我的存储桶配置为

<CORSConfiguration>
  <CORSRule>
   <AllowedOrigin>*</AllowedOrigin>
   <AllowedMethod>GET</AllowedMethod>
   <MaxAgeSeconds>3000</MaxAgeSeconds>
   <AllowedHeader>Authorization</AllowedHeader>
  </CORSRule>
</CORSConfiguration>

基于我在网上找到的一些资源,例如-CORS. Presigned URL. S3等 我已将cors配置更改为

    <CORSConfiguration>
      <CORSRule>
       <AllowedOrigin>*</AllowedOrigin>
       <AllowedMethod>GET</AllowedMethod>
       <MaxAgeSeconds>3000</MaxAgeSeconds>
       <AllowedHeader>*</AllowedHeader>
      </CORSRule>
    </CORSConfiguration>

它起作用了,我能够通过js代码访问该URL。但是我试图了解将此标签从“授权”更改为*是否有任何安全隐患。

请让我知道。

1 个答案:

答案 0 :(得分:0)

这取决于您打算如何使用预签名的URL。

  • 如果Web应用程序/服务器将使用它临时访问s3资源,则应该将CORS AllowedOrigin限制为将请求资源的应用程序的域。通常,此CORS配置(Access-Control-Allow-Origin)对安全性的影响最大。请参阅thisthis

    您可以使用通配符或特定域来限制它:

    <AllowedOrigin>https://*.mydomain.s3.amazonaws.com</AllowedOrigin>
    
  • 如果多个客户端(即最终用户Web浏览器)将请求它,那么您别无选择,只能设置<AllowedOrigin>*<AllowedOrigin>,因此这不是推荐的方法。

如果您将访问权限限制为仅允许您信任的域,那么将AllowedHeaders设置为*的安全隐患很小。