假设这种情况: 我正在构建可以将用户上传到我的AWS S3帐户的服务。 使用我的服务的每个站点都必须具有直接上传到S3的上载表单。为此,每个站点都必须使用AWS签名版本4签署其上传表单。 问题是签名要求AWSAccessKeyId和AWSSecretAccessKey,我必须分享给我的服务用户,这是不可接受的。 我以为我可以在我身边生成所有需要的签名数据,并在用户(网站)要求时回复。
所以问题是:是一个坏主意,为了签署上传表格网站(将上传文件到我的S3)必须向我的服务器请求签名数据(XHR或服务器端)吗
答案 0 :(得分:0)
我不完全确定你在问什么,但是如果你问的是代表个别网站自己签名上传是不是一个坏主意,那么答案就不是......但需要注意。
签署上传(实际上,您应该只签署上传网址)远比向其他域提供访问密钥的安全风险小得多。这就是它的用途,允许匿名上传。对请求进行签名仅仅会为网站/用户提供上传权限,但不会考虑上传者或上传内容。
这是您自己的安全检查需要进入的地方。如果表单托管在多个域上(所有内容都上传到您的S3存储桶),您应首先检查表单源自的域,以避免有人放置表单在他们自己的网络服务器上并尝试上传内容。根据您的各种网站的配置方式,有几种方法可以做到这一点,不幸的是我不是专家。
其次,您需要验证正在上传的数据。是纯文本,二进制等吗?您需要在启动上传之前验证所有这些内容。
我希望这会有所帮助。