我使用express和nodejs作为后端,我使用aws-sdk客户端将图像/文件上传到aws s3中,在检索并将其发送到前端时,我每次都会发送图像的预签名URL。我的问题是,安全吗?因为 url 包含存储桶名称和区域以及其他元素。我不想让用户/任何其他人知道发生了什么。有没有更好的方法或者什么可以解决?
我正在考虑只发送 aws 中的文件密钥(如“uploads/images/image.jpg”)作为响应,而不是预先签名的 url,并让客户端在想要查看图像时进行提取。但我想,很少会出现问题,我有很多图像附加到特定请求,如果客户端不断为每个图像而不是可以直接从aws获取的预签名url访问服务器,这会成为服务器上的负担吗?如果是轮播视图,会不会显得很无缝?
使用预先签名的 url 很棒,但我不想在其中显示 aws 凭证。
使用预签名 URL 来提供存储在 AWS S3 中的文件是一种常见且通常安全的做法。
替代方法:您可以选择 S3 静态网站托管,而不是直接提供预签名 URL。为了使其更加安全、大幅提高性能并减少延迟,您可以将 CloudFront 配置为将 S3 存储桶中的内容作为源提供服务,从而有效地向最终用户隐藏 S3 详细信息。