Как ограничить доступ Cloudfront только к моему домену? - PullRequest
0 голосов
/ 23 июня 2018

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

d23ek3kf.cloudfront.net / video.m3u8> mydomain.com>видео доступно

d23ek3kf.cloudfront.net / video.m3u8> randomdomain.com> видео недоступно

Ответы [ 2 ]

0 голосов
/ 24 июня 2018

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

Создайте Lambda @ Edge Триггер запроса средства просмотра. Это позволяет вам проверить запрос до проверки кэша и разрешить продолжить обработку или вернуть сгенерированный ответ.

'use strict';

exports.handler = (event, context, callback) => {

  // extract the request object
  const request = event.Records[0].cf.request;

  // extract the HTTP `Referer` header if present
  // otherwise an empty string to simplify the matching logic
  const referer = (request.headers['referer'] || [ { value: '' } ])[0].value;

  // verify that the referring page is yours
  // replace example.com with your domain
  // add other conditions with logical or ||
  if(referer.startsWith('https://example.com/') ||
     referer.startsWith('http://example.com/'))
  {
    // return control to CloudFront and allow the request to continue normally
    return callback(null,request);
  }

  // if we get here, the referring page is not yours.
  // generate a 403 Forbidden response
  // you can customize the body, but the size is limited to ~40 KB

  return callback(null, {
    status: '403',
    body: 'Access denied.',
    headers: {
      'cache-control': [{ key: 'Cache-Control', value: 'private, no-cache, no-store, max-age=0' }],
      'content-type': [{ key: 'Content-Type', value: 'text/plain' }],
    }
  });
};
0 голосов
/ 23 июня 2018

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

На любом другом веб-сайте будет ссылка на видео, которой недостаточно для загрузки видео. Посмотрите документацию AWS здесь, чтобы понять детали и механизм для достижения этого. https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/PrivateContent.html

...