Вы можете разрешить доступ к вашим ресурсам только для таких запросов, чей HTTP-заголовок referer совпадает с установленным вами шаблоном.
HTTP referrer – это опциональный заголовок HTTP-запроса, содержащий адрес сайта или страницы, которые послужили источником перехода или запроса (см. HTTP referer).
Для настройки выполните следующие шаги:
1. Войдите в панель управления Universal CDN по адресу my.ucdn.com;
2. Откройте раздел My Zones в верхнем левом углу;
3. Нажмите на значок шестеренки у той CDN-зоны, доступ к которой хотите ограничить;
4. Откройте раздел Limit Access;
5. Прокрутите страницу вниз до пункта Limit access by referer и установите галочку возле него;
6. Введите регулярное выражение, совпадение HTTP-заголовка referer с которым будет разрешать доступ к ресурсу.
Вы можете применять фильтр к HTTP-заголовку Origin в случае, если HTTP-заголовок referer отсутствует или пуст. Для этого установите флажок рядом с «In case of missing referer header, apply the filter to the Origin Header».
Как задавать шаблон для проверки HTTP referer
Для проверки HTTP referer мы используем регулярные выражения. Регулярные выражения (англ. regular expressions) — набор символов и метасимволов, задающий правило поиска по строке или совпадения строки с шаблоном. Мы используем синтаксис PCRE.
Это краткое справочное руководство по регулярным выражениям PCRE с некоторыми примерами, которые могут быть полезны для настройки ограничения по вашему домену в referer. Более подробная документация по регулярным выражениям доступна по ссылкам: Perl-compatible regular expressions (PCRE) syntax и Perl 5 version 32.0 documentation.
Следующие 11 символов (часто называемые «метасимволами») имеют особое значение в регулярных выражениях PCRE:
Character | Meaning |
---|---|
caret ( ^ ) | beginning of string |
dollar sign ( $ ) | end of string |
backslash ( ) | quote or special |
period or dot ( . ) | any character except newline |
vertical bar ( | ) | alternative |
question mark ( ? ) | match 0 or 1 time; or: shortest match |
asterisk ( * ) | match 0 or more times |
plus sign ( + ) | match 1 or more times |
parenthesis ( ) | grouping; “storing” |
square bracket [ ] | set of characters |
curly braces { } | repetition modifier |
Упомянутые выше метасимволы могут быть экранированы обратным слешем ( ) для ввода в качестве обычных символов.
Предположим, что ваше доменное имя – example.com, и рассмотрим несколько примеров.
Пример 1: только https, один домен
^https:\/\/video\.example\.com(\/.*|$)
С этим шаблоном будут совпадать любые строки, начинающиеся с «https://video.example.com»
Разберем шаблон по частям:
^https:\/\/ – эта часть выражения означает, что строка должна начинаться с https://. Так как слэш ( / ) является в PCRE специальным символом – разделителем шаблонов, каждый такой символ экранируется обратным слешем ( \ ). В начале строки стоит специальный символ карет (^) , означающий начало строки.
video\.example\.com – эта часть выражения задает домен. Так как точка ( . ) является в PCRE специальным символом, каждый такой символ экранируется обратным слешем ( \ ).
Since the period or dot ( . ) is one of the special characters that are reserved for special use, the backslash ( \ ) character must be included right before the dot ( . ) otherwise, the dot character will not be taken literally (e.g video\.example\.com).
(\/.*|$) – эта часть выражения разрешает любую последовательность символов после слеша (в случае его наличия), кроме символа новой строки.
Пример 2: http и https, любые поддомены заданного домена
^http(s?):\/\/(.+\.)*example\.com(\/.*|$)
Этот шаблон позволяет использовать http и https в качестве протокола (схемы), а также любые поддомены домена example.com.
^http(s?):\/\/ – Для того, чтобы шаблон работал для http:// и https://, нужно в шаблон из предыдущего примера в части протокола добавить символ s с модификатором ?, означающим повторение ноль или более раз. Символ добавляется в виде отдельной группы – (s?).
(.+\.)* – эта группа любых символов (за исключение разрыва или перевода строки), повторяющаяся ноль или более раз (модификатор *). Такая группа делает адреса с поддоменами любых уровней (включая www) подходящими под шаблон.
example.com – эта часть выражения разрешает любую последовательность символов после слеша (в случае его наличия), кроме символа новой строки.
(\/.*|$) – эта часть выражения разрешает любую последовательность символов после слеша (в случае его наличия), кроме символа новой строки.
После внесения изменений в настройки зоны, не забудьте нажать кнопку сохранения – Save Changes.
Ограничение Доступа к CDN-ресурсам
Ограничение Доступа с Помощью Секретного Ключа
Ограничение Доступа По Списку Стран