Loading...

Справка CDN.com.tr

Подписанные URL: ссылки с истекающим сроком действия

Защитите файл так, чтобы его можно было получить только по подписи, которую вы сами генерируете и которая действительна до выбранного вами момента. Запросы без подписи получают 403, а с истёкшим сроком — 410.

Подписанные URL: ссылки с истекающим сроком действия

Защитите файл так, чтобы его можно было получить только по подписи, которую вы сами генерируете и которая действительна до выбранного вами момента. Запросы без подписи получают 403, а с истёкшим сроком — 410.

Рекомендуемое следующее руководство

Путь в панели

  1. Management Panel
  2. Delivery Rules
  3. Expiring links
  4. Secret

Предварительные требования

  • Аккаунт с хостом доставки.
  • Место в вашем приложении, где можно генерировать ссылки.

Модель принятия решений

На весь аккаунт или на один путь?

Настройка существует на обоих уровнях. На весь аккаунт означает, что подпись нужна для каждого запроса, а это ломает обычные страницы. Одно правило для /downloads или /video — то, что нужно большинству.

  • На весь аккаунт: только для аккаунтов, которые отдают исключительно защищённые файлы
  • На одно правило: обычный выбор

Сколько должна жить ссылка?

Достаточно коротко, чтобы утёкшая ссылка была бесполезна, и достаточно долго, чтобы медленное соединение успело закончить загрузку. Минуты для документа, часы для большого видео.

  • Документы и изображения: 5-15 минут
  • Большое видео или архивы: 1-6 часов

Пошаговое руководство

1

Включите для одного пути

Откройте Delivery Rules, добавьте или отредактируйте правило, покрывающее нужный путь, включите опцию Expiring links и задайте секрет. Используйте длинную случайную строку, а не слово.

  • Delivery Rules → правило для /downloads → включите Expiring links → вставьте случайный секрет → Apply Changes

Ожидаемый результат: После того как конфигурация дойдёт до edge, обычный запрос к этому пути возвращает 403.

2

Сгенерируйте ссылку в вашем приложении

Подпись — это base64url-форма MD5 от времени истечения, пути и секрета, соединённых вместе, с одним пробелом перед секретом. Добавьте её как md5, а время истечения как expires.

  • PHP: $expires = time() + 600; $token = rtrim(strtr(base64_encode(md5($expires . $uri . " " . $secret, true)), "+/", "-_"), "=");
  • Then: https://cdn.example.com/downloads/file.zip?md5=TOKEN&expires=EXPIRES

Ожидаемый результат: Ссылка отдаётся, пока не истёк срок действия.

3

Проверьте все три исхода

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

  • Запрос без параметров (403)
  • Запрос с истёкшим сроком (410)
  • Запрос с действительной ссылкой (200)

Ожидаемый результат: Три разных ответа, так что обращение пользователя можно классифицировать по одному лишь коду состояния.

Проверка

  • curl -o /dev/null -w "%{http_code}" "https://cdn.example.com/downloads/file.zip" → 403
  • curl -o /dev/null -w "%{http_code}" "https://cdn.example.com/downloads/file.zip?md5=TOKEN&expires=PAST" → 410

Сценарии использования

Вы продаёте видео, отчёт или файл для скачивания, и ссылка не должна оставаться доступной вечно. Защита от хотлинков не даёт другим сайтам встраивать ваши файлы; подписанный URL идёт дальше и делает каждую ссылку персональной и ограниченной по времени.

Краткий порядок действий

  1. Delivery Rules → выберите аккаунт (или одно правило для конкретного пути) → включите Expiring links и задайте секрет.
  2. Ваше приложение формирует ссылку: оно хеширует время истечения, путь и секрет, затем добавляет к URL подпись и время истечения.
  3. Edge проверяет подпись раньше всего остального. Действительные ссылки отдаются и кешируются как обычно; недействительные никогда не доходят до вашего origin.
  4. Меняйте секрет, если он утёк или когда кто-то уходит из команды. Каждая ссылка, подписанная старым секретом, сразу перестаёт работать.

Проверки

  • Ссылка без параметров возвращает 403.
  • Ссылка с истёкшим сроком действия возвращает 410 — отдельный код, чтобы по вашим же логам можно было отличить один случай от другого.
  • Ссылка с верной подписью отдаётся, и ответ кешируется как любой другой.