使用AWS S3上传发送给用户的文档(基于电子邮件/移动认证的某些用户)最安全的方式是什么?



我使用AWS S3存储订单确认pdf。用户完成交易后,将生成订单确认PDF并将其存储在AWS S3存储桶中,然后将其作为链接通过电子邮件发送给用户。我想确保只有特定的用户才能访问为他/她准备的文档。最好、最安全的方法是什么?

我使用nodejs服务器来处理用户请求。

您可以使用AWS的JavaScript SDK从S3上的对象获取签名URL。你可以在本页找到参考文献。我还建议为这个URL设置一个截止日期,以确保最大的安全。

# From AWS JS SDK docs page
var params = { Bucket: 'bucket', Key: 'key', Expires: 60 };
var url = s3.getSignedUrl('getObject', params);
console.log('The URL is', url); // expires in 60 seconds

使用签名URL,您可以通过更改Bucket本身的权限将S3上的对象设置为不可公开访问。

有了这个设置,你的PDF文件将不会被任何人访问,除了那些有这个签名的URL(你可以在电子邮件中发送给用户)。

Amazon S3预签名url提供对私有对象的限时访问。一旦该时间段过期,该对象将无法再访问。

但是,预签名URL的最大有效期是7天。您的用例可能需要访问该文件的时间超过此期限。

你有两个选择:

  • 要求用户对您的网站进行身份验证,然后生成一个新的预签名URL,
  • 不使用预先签名的URL,而是使用一个将混淆URL并使其难以猜测的UUID——这不是完美的安全性,但长UUID将使其更安全。

最新更新