如何使用downloadhelper插件保护s3文件免于下载

时间:2019-10-01 12:14:19

标签: node.js reactjs amazon-s3 aws-lambda

我的视频文件存储在s3存储桶中。

我的文件可以使用名为Video DownloadHelper的插件下载。它有两种选择:下载Using Browser和下载Using Companion App

我通过使用特定的http引荐来源网址设置存储桶策略来限制S3文件访问。

现在添加此策略后,将无法下载Using Browser,但能够下载Using Companion App

如何也限制使用第二种方法下载文件?我设置的存储桶策略如下。任何帮助,将不胜感激。谢谢。

{
   "Version": "2012-10-17",
   "Id": "http referer policy example",
   "Statement": [
     {
       "Sid": "Allow get requests referred by www.example.com and example.com.",
       "Effect": "Allow",
       "Principal": "*",
       "Action": "s3:GetObject",
       "Resource": "arn:aws:s3:::examplebucket/*",
       "Condition": {
         "StringLike": {"aws:Referer": ["http://www.example.com/*","http://example.com/*"]}
       }
     },
      {
        "Sid": "Explicit deny to ensure requests are allowed only from specific referer.",
        "Effect": "Deny",
        "Principal": "*",
        "Action": "s3:*",
        "Resource": "arn:aws:s3:::examplebucket/*",
        "Condition": {
          "StringNotLike": {"aws:Referer": ["http://www.example.com/*","http://example.com/*"]}
        }
      }
   ]
}

1 个答案:

答案 0 :(得分:0)

将文件加载到浏览器中后,即可下载文件。您可以做的是为图像生成一个签名的URL,该URL在短时间内有效。

将图像的src设置为重定向到signed URL generated by the backend的API,因此在检查浏览器时,它将signed URL显示为SRC,但该URL可以不可重用。但这只会阻止图像URL的重用,或者如果下载帮助程序正在使用URL下载图像,则这将阻止。每当用户刷新页面时,都会生成一个新的URL并将其发送到浏览器。

例如:

   <img src=https://api-url/image/image-id>

并在您的后端执行类似

的操作
response.redirect(signed-url)
相关问题