我已经生成了一个预签名的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。但是我试图了解将此标签从“授权”更改为*是否有任何安全隐患。
请让我知道。
答案 0 :(得分:0)
这取决于您打算如何使用预签名的URL。
如果Web应用程序/服务器将使用它临时访问s3资源,则应该将CORS AllowedOrigin
限制为将请求资源的应用程序的域。通常,此CORS配置(Access-Control-Allow-Origin
)对安全性的影响最大。请参阅this或this。
您可以使用通配符或特定域来限制它:
<AllowedOrigin>https://*.mydomain.s3.amazonaws.com</AllowedOrigin>
如果多个客户端(即最终用户Web浏览器)将请求它,那么您别无选择,只能设置<AllowedOrigin>*<AllowedOrigin>
,因此这不是推荐的方法。
如果您将访问权限限制为仅允许您信任的域,那么将AllowedHeaders
设置为*
的安全隐患很小。