Ограничение доступа по HTTP referer

Вы можете разрешить доступ к вашим ресурсам только для таких запросов, чей 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-Зоны

Ограничение Доступа к CDN-ресурсам

Ограничение Доступа с Помощью Секретного Ключа

Ограничение Доступа По Списку Стран

Ограничение Доступа По IP-адресу или Диапазону Адресов

Ограничение скорости загрузки

Управление Кэшированием

Работа Со Страницами Ошибок

Инструкции