Как предотвратить создание хотлинков на Amazon S3 без использования подписанных URL-адресов?

StackOverflow https://stackoverflow.com/questions/948823

  •  09-09-2019
  •  | 
  •  

Вопрос

Есть ли способ предотвратить хотлинкинг на Amazon S3 без использования подписанных URL-адресов?

Это было полезно?

Решение

Настроив правильную политику корзины S3, вы можете добавить политику рефералов, чтобы предотвратить хотлинк.

http://s3browser.com/working-with-amazon-s3-bucket-policies.php

Другие советы

Вам нужна политика корзины, которая разрешает рефереры из вашего домена(ов) и запрещает реферерам, которые не из ваших доменов.Я обнаружил, что изображения могут быть связаны горячими ссылками, если вы не включаете явный запрет — многие руководства и примеры просто описывают политику разрешения и не упоминают часть запрета.

Вот моя политика: просто измените BUCKET-NAME и YOUR-WEBSITE на свои собственные данные:

{
  "Version": "2008-10-17",
  "Id": "",
  "Statement": [
    {
      "Sid": "Allow in my domains",
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::BUCKET-NAME/*",
      "Condition": {
        "StringLike": {
          "aws:Referer": [
            "http://www.YOUR-WEBSITE.com/*"
          ]
        }
      }
    },
    {
      "Sid": "Deny access if referer is not my sites",
      "Effect": "Deny",
      "Principal": {
        "AWS": "*"
      },
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::BUCKET-NAME/*",
      "Condition": {
        "StringNotLike": {
          "aws:Referer": [
            "http://www.YOUR-WEBSITE.com/*"
          ]
        }
      }
    }
  ]
}

Я использую Apache RewriteMap для переназначения относительных ссылок для выбора расширений файлов — *.jpg, *.gif, *swf, *.fla — в Cloudfront.По сути, URL-адрес ваших изображений отображается в виде относительных ссылок на ваш сайт.Это не предотвращает полностью обнаружение URL-адреса S3/cloudfront, а просто добавляет дополнительный уровень сложности для потенциального вора.

Возможно, стоит попробовать применить ограничения хотлинков через htaccess, используя описанный выше метод.Я сам не пробовал.

Есть хороший мастер-класс здесь.Обязательно ознакомьтесь с комментариями, так как в коде веб-сайта есть пробел, из-за которого решение не работает.

Это в их официальные документы

Изменять examplebucket к названию вашего сегмента и example.com в ваш домен.

"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:::examplebucket/*",
    "Condition":{
      "StringLike":{"aws:Referer":["http://www.example.com/*","http://example.com/*"]}
    }
  }
]
}

Хотлинкинг — одна из причин, по которой Amazon создал Cloudfront.Cloudfront работает намного быстрее.Я написал об этом статью, которую вы можете посмотреть здесь.

http://blog.sat.iit.edu/2011/12/amazon-aws-s3-vs-cloudwatch- Performance-grudgematch/

редактировать:S3 и Cloudfront используют один и тот же тип политики сегмента, чтобы гарантировать, что запрос поступает с правильного URL-адреса.Однако Cloudfront по-прежнему быстрее.

Не совсем.Через него вы можете запустить экземпляр EC2 и прокси.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top