Защита от горячих ссылок для прокси и CDN аватаров

Я ненавижу размытые вопросы. Что вы имели в виду, когда спрашивали про «это»?

Вот мои текущие настройки:

Настройка Discourse:

  • Стандартная установка в одном контейнере
  • Настроено как поддомен: forums.domain.tld
  • Стандартная настройка S3 для загрузок
  • Загрузки сохраняются в S3

Настройка S3:

  • Ведро S3 от Digital Ocean
  • Ведро включено для внешнего доступа
  • Никаких других уровней безопасности или разрешений

Настройка CDN:

  • bunny CDN
  • Настроены разрешённые рефереры: domain.tld и *.domain.tld
  • Переключатель, который заблокировал доступ к аватарам, назывался «Блокировать прямой доступ к файлам по URL».

Когда он включён, все аватары возвращают ошибку 403. Когда выключен — аватары отображаются.

Изображения, не являющиеся аватарами:

  • URL в Discourse: https://cdn.domain.tld/optimized/3X/3/1/filename_#_size.jpeg

Изображения аватаров:

  • URL в Discourse: https://forums.domain.tld/user_avatar/forums.domain.tld/mazzini/48/776_2.png

В предыдущем посте Как хранятся и доступны аватары? указывается, что Discourse использует прокси для аватаров. Следовательно, структура URL для аватаров не является стандартной структурой URL изображений.

В моей системе аватары доступны либо из S3, либо из CDN. Это означает, что где-то и каким-то образом URL аватара преобразуется в URL CDN.

Когда это происходит, CDN считает URL прямой ссылкой и блокирует доступ с ошибкой 403.

Надеюсь, я ответил на вопрос про «это»?