Как защитить файлы S3 от скачивания с помощью плагина downloadhelper - PullRequest
0 голосов
/ 01 октября 2019

Мои видеофайлы хранятся в корзине s3.

Мои файлы можно загрузить с помощью плагина под названием Video DownloadHelper. У него есть два варианта: загрузить Using Browser и загрузить Using Companion App.

. Я ограничиваю доступ к файлам S3, установив политику корзины с определенным http-реферером.

После добавления этой политики теперь это не так. можно загрузить 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 голосов
/ 02 октября 2019

Как только ваш файл загружен в браузер, его можно загрузить. что вы можете сделать, это создать подписанный URL-адрес для изображений, который действителен в течение короткого времени.

установите для src для изображений API, который перенаправляет на signed URL generated by the backend, поэтому при проверкебраузер покажет signed URL как SRC, но этот URL нельзя использовать повторно. Но это только предотвратит повторное использование URL-адресов изображения или, если помощник по загрузке использует URL-адрес для загрузки изображения. Здесь всякий раз, когда пользователь обновляет страницу, новый URL будет сгенерирован и отправлен в браузер.

Например:

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

и в вашем бэкэнде сделайте что-то похожее на

response.redirect(signed-url)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...