避免 s3 上的 mp4 被輕鬆下載

  1. #AWS
  2. #S3

免責聲明:此方法只能防止一般的使用者,不能阻擋有網頁知識或是透過專業工具的下載

調整 s3 的 policy 只允許 referer 來自於你自己的 domain,這樣就可以讓直接透過複製網址的方式想要下載影片的人無法下載,結果如下圖

這邊假設你有 AWS S3 的管理權限,這時候就可以進去 AWS console 裡面的 permission 去設定 bucket policy,如下圖

具體的設定文字內容如下:

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

透過以上這些設定,就完成囉

如果還是有問題,可以檢查一下 Block public access (bucket settings) 的設定是否如下圖

最後,影片可以在你的網站上正常播放,但是卻沒辦法直接下載

最後的最後,不要忘記把 video 的 controls 關掉,並且加上 pointer-events: none;,因為不知道為什麼,即便都這樣設定了,如果沒有存取過影片的網址,直接點影片右鍵另存影片是可以存檔的 😂

References