Как предотвратить хотлинкинг на Amazon S3 без использования подписанных URL-адресов? - PullRequest
20 голосов
/ 04 июня 2009

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

Ответы [ 7 ]

19 голосов
/ 10 февраля 2013

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

Вот моя политика, просто измените ИМЯ ВЕДРО и ВАШ САЙТ на свои собственные данные:

{
  "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/*"
          ]
        }
      }
    }
  ]
}
11 голосов
/ 21 сентября 2011

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

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

3 голосов
/ 08 августа 2009

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

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

1 голос
/ 16 сентября 2016

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

Измените 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/*"]}
    }
  }
]
}
1 голос
/ 20 июня 2011

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

0 голосов
/ 29 декабря 2011

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

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

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

0 голосов
/ 04 июня 2009

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

...