Назад | Перейти на главную страницу

Как заблокировать CloudFront или другой CDN для доступа к моему сайту

Некоторые ребята создают CloudFront CDN для прокси-сервера моего сайта, чтобы люди могли получить доступ к моему сайту, используя URL-адрес, например df03039lsls933.cloudfront.net вместо того www.example.com

Как заблокировать это с помощью nginx?

В документе CloudFront сказано ...

Host: CloudFront sets the value to the domain name of the origin that is 
      associated with the requested object.

Поэтому я не могу заблокировать, используя host заголовок, каков был бы другой подход?

(CloudFront - это просто пример, я хочу заблокировать все CDN с помощью аналогичного подхода)

Запросы CloudFront поступают от задокументированные диапазоны IP-адресов а также со строкой User-Agent, которая включает Amazon CloudFront. Вы можете заблокировать и то, и другое, но поскольку диапазоны IP-адресов AWS довольно часто расширяются, я бы выбрал блок User-Agent.

Я ожидаю, что CDN добавит заголовки, которые можно использовать для их идентификации. Обычно они указывают реальный IP-адрес пользователя, а также некоторую другую информацию. Они также должны добавить или добавить X-Forwarded-For header, который также должен содержать IP-адрес, на который они пересылаются.

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

Вам также следует связаться с CDN, если кто-то настроил ваш домен без вашего разрешения.

Я считаю, что вы можете использовать код javascript, чтобы проверить, что находится в location. Эта проверка будет выполняться в браузере посетителя (а не на стороне сервера!). Этот подход очень похож на защита от открытия веб-страницы в iframe.

Если такая ситуация обнаружена, вы можете перенаправить пользователя на действующий URL (или просто ничего не показывать).