Подтвердить что ты не робот

Частный дистрибутив Amazon Cloudfront - ссылки на изображения внутри CSS

Я создал приватное распределение в Cloudfront, чтобы предотвратить hotlinking. Мне удалось создать ссылки на мои объекты с подписанным URL, который теперь работает нормально.

Мои единственные проблемы, заключается в том, что ссылки изображений внутри моих стилей CSS не работают, потому что они не подписаны. Поэтому, если у меня есть, например:

background-image: url('../img/bg.png');

Фоновое изображение не будет отображаться, поскольку таблица стилей не включает подписанный URL-адрес, и поэтому Cloudfront отказывается обслуживать контент.

Есть ли что-нибудь, что я могу сделать, чтобы это предотвратить?

4b9b3361

Ответ 1

Позвольте мне отступить и задаться фундаментальным вопросом: неужели вы действительно беспокоитесь о том, что люди обращаются к вашим изображениям? В самом деле? И если кто-то это сделает, каково реальное воздействие, которое это окажет на вас? Действительно?

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

Эй, я просто честен...

Ответ 2

Есть несколько способов, каждый из которых имеет недостатки.

Вместо статического файла CSS вы генерируете его из шаблона (или другого умного способа сопоставления ресурсов в местах CloudFront). Вы можете использовать некоторую степень кэширования здесь, используя заголовки Last-Modified и max-age Cache. Самое сложное решение, но, возможно, лучшая защита.

Настройте путь перенаправления для всех ваших ресурсов CSS, в основном небольшой script, который переписывает путь к CF (позаботьтесь только о перезаписи ресурсов CSS и ничего больше). Это позволяет сохранить текущий статический CSS, но открывает потенциальную горячую ссылку вашего перенаправления script.

Что-то между собой может быть cron script, который генерирует статические файлы CSS со ссылками, срок действия которых истекает в 1.5d), чтобы уменьшить нагрузку на сервер.

Ответ 3

Как правило, очень плохая идея использовать частные дистрибутивы для ваших файлов css, поскольку добавление (предположительно постоянно меняющегося) времени истечения срока действия и подписи к URL-адресам css не позволяет браузерам кэшировать их, что значительно снижает полезность использования Cloudfront в первом место.

И даже если вы используете длительные сроки истечения срока действия, тогда кто-то, кто отчаянно хочет использовать ссылки для ссылок на css, просто установит script, чтобы очистить ваш файл css и извлечь из него URL-адреса изображений.

Ответ 4

вы можете повернуть все имя хоста CDN каждый день или два, тогда вам не нужно что-либо менять в css (предполагая, что css находится на CDN, который похож на пример)

http://www.explainthatstuff.com/blocking-cloudfront-hotlinks.html

Затем ваш CSS не нуждается в подписанных URL-адресах, и вы все равно можете блокировать hotlinking так же эффективно.

Ответ 6

как насчет использования тега <base> в yr html? Хотя он не пытался, но мог бы помочь.

Другой вариант - использовать php для создания вашей таблицы стилей. например, вы получаете подписанные URL-адреса для всех изображений, затем вы нажимаете их как переменные в элементы стиля.