Рубрики
Нестандартные мысли

Защита от хотлинков с помощью .htaccess

Защита от хотлинков с помощью .htaccess

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

Защита от хотлинков с помощью .htaccess

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

Содержимое

Пример

Однажды кто-то нашел на моем сайте большое изображение, которое, по их мнению, могло бы стать хорошим аватаром на их форуме. Они связались с моим сервером для изображения, и хотя оно было уменьшено на страницах форума, оно все еще загружалось в полном размере (более 200 КБ). У этого человека было много сообщений, и это был очень активно используемый форум. В итоге он использовал около 100 мегабайт пропускной способности в день или около 3 гигабайт в месяц! Именно тогда я решил начать использовать предотвращение хотлинков.

Требования

В этой статье рассматривается защита от горячих ссылок для веб-сервера Apache. Если вы используете IIS, то же самое можно сделать с помощью коммерческого программного обеспечения, такого как ISAPI Rewrite .

Возможно, вам придется обратиться в службу хостинга или просто поэкспериментировать, чтобы узнать, сможете ли вы использовать файл .htaccess. Файл .htaccess — это просто текстовый файл, содержащий директивы (параметры конфигурации) для веб-сервера Apache. Его легко создать, если у вас его еще нет, и обычно он находится в корневом каталоге вашего сервера. Любые настройки в этом файле будут применяться ко всем подкаталогам (если не указано иное — об этом позже).

Если вы предпочитаете использовать основной файл конфигурации Apache (httpd.conf) для настроек вашего сервера, все в этом руководстве можно выполнить примерно таким же образом.

Несколько замечаний по коду

В этой статье будут рассмотрены два основных метода предотвращения хотлинков: замена изображения и ответы « 403 Forbidden ». Возможно, вы видели код защиты от хотлинков, который перенаправляет пользователей на указанную веб-страницу, но это наверняка не сработает. Это эквивалентно размещению URL-адреса в теге <img>, и это только вызовет проблемы.

Если вы хотите, чтобы горячие ссылки приводили посетителей на ваш сайт, лучше всего просто вернуть ответ « 403 Forbidden » и создать красивые настраиваемые страницы ошибок. Стандартная страница ошибки, как правило, просто заставит посетителя закрыть окно, но хорошо сделанная пользовательская страница ошибки может предоставить посетителю информацию о сайте и ссылки на основные разделы. Благодаря этому они с большей вероятностью посетят ваш сайт.

Ниже приведены пояснения к примерам кода, а также некоторая основная информация о флагах и других параметрах. Для полного объяснения всего, что вы можете сделать с файлом .htaccess, я рекомендую взглянуть на документацию по директиве Apache .

Правильный метод замены изображения

Этот метод отображает указанное изображение на странице хотлинкера, независимо от того, на какое изображение он ссылается. У вас может быть простое изображение с надписью «Не делать хотлинков!», или вы можете использовать свое воображение и действительно обескуражить их! Читайте дальше, чтобы узнать, как лучше всего создавать эти файлы.

RewriteEngine включен RewriteCond %{HTTP_REFERER} . RewriteCond %{HTTP_REFERER} !^http://(www\\.)?yoursite\\.com [NC] RewriteRule \\.(gif|jpe?g)$ /images/hotlink.$1 [L]

Разбивка кода

RewriteEngine включен

Это включает механизм mod_rewrite в Apache. Требование к командам перезаписи.

RewriteCond %{HTTP_REFERER} .

В этой строке разрешены пустые рефереры. Точка в .htaccess означает «любой символ». Это означает, что пользователи могут вручную ввести ссылку на одно из ваших изображений в своем браузере, но, как правило, это даже не проблема. Если вы опустите эту строку, большой процент посетителей не увидит ваши изображения. Сюда входят многие пользователи, находящиеся за корпоративными брандмауэрами и интернет-провайдерами, все пользователи AOL и многие другие. Настоятельно рекомендуется оставить эту строку! Если посетитель думает, что ваш сайт сломан, он, скорее всего, не вернется. Если у вас есть какой-либо сайт электронной коммерции, они, вероятно, не будут иметь с вами дело!

RewriteCond %{HTTP_REFERER} !^http://(www\\.)?yoursite\\.com [NC]

Здесь сервер проверяет, исходит ли запрос из вашего собственного домена. Просто измените текст, чтобы он соответствовал вашему веб-сайту. Он обрабатывает предотвращение хотлинков независимо от того, используется ли префикс «www». Флаг [NC] в конце означает «No Case», поэтому он будет обрабатывать все.

Обратите внимание, что перед точками в имени домена стоит обратная косая черта. Как указано выше, в файле .htaccess точка означает «любой символ». Если перед ним поставить обратную косую черту, то он превратится в буквальную точку, а это означает, что на самом деле там должна быть точка. При написании кода .htaccess всегда лучше учитывать все возможности.

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

RewriteRule \\.(gif|jpe?g)$ /images/hotlink.$1 [L]

Эта последняя строка блокирует все запросы файлов gif, jpg и jpeg, если только они не исходят от разрешенного ресурса. Вы заметите файл hotlink.$1 . Этот код заставит сервер вернуть правильный тип файла — формат, который был запрошен. Многие коды защиты от хотлинков просто отправляют один тип файла, несмотря ни на что, но многие браузеры не обработают это должным образом, и описанный выше метод обеспечивает наибольшую гибкость при правильном выполнении.

Это означает, что для этого примера нам нужно создать файлы hotlink.gif, hotlink.jpg и hotlink.jpeg. Просто создайте заменяющее изображение и экспортируйте его в каждый из необходимых типов файлов. Затем просто загрузите их на свой сервер в указанное кодом место (в данном случае — /images/). Вы можете сделать заменяющие изображения такими большими или маленькими, как хотите, просто имейте в виду, что если они слишком большие, вы можете потерять больше пропускной способности, чем без кода защиты!

Правильный метод «403 Forbidden»

Этот метод мой любимый, потому что он самый простой на сервере и вообще не использует пропускную способность. Еще раз, есть несколько способов просто вернуть «ничего», но генерация ошибки « 403 Forbidden » для хотлинкера, пожалуй, лучший. Это не вызовет ошибок или путаницы на вашем сервере, а хотлинкер останется с неработающей ссылкой на изображение.

RewriteEngine включен RewriteCond %{HTTP_REFERER} . RewriteCond %{HTTP_REFERER} !^http://(www\\.)?yoursite\\.com [NC] Правило перезаписи \\.(gif|jpe?g)$ – [NC,F]

Разбивка кода

Последняя строка — единственное различие в этих двух примерах, а этот просто содержит тире там, где должен быть файл изображения. Поскольку мы просто возвращаем сообщение об ошибке « 403 Forbidden » хотлинкеру, нам не нужно беспокоиться о создании каких-либо файлов изображений.

Как упоминалось ранее, если у хотлинкеров есть простые ссылки на ваши изображения (в отличие от изображений, отображаемых с помощью тегов <img>), нажатие на ссылки вернет ошибку « 403 Forbidden » при использовании этого метода. Это то, что нам нужно, но нет никаких причин, по которым вы не можете создавать собственные страницы ошибок, которые предоставляют пользователю информацию о вашем сайте и ссылки на основные разделы. Это дает вам гораздо больше шансов удержать этих посетителей!

Изменение заблокированных расширений

Чтобы другие расширения были заблокированы, вам просто нужно добавить их между скобками, поместив | (вертикальная черта) между каждым. В случае файлов jpg и jpeg имеется только одна запись, но вопросительный знак после «e» означает, что она необязательна, поэтому она обрабатывает обе.

Исправление проблем

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

Еще одна важная вещь, о которой следует упомянуть, это то, что во многих конфигурациях серверов mod_rewrite требует, чтобы была включена опция FollowSymlinks или SymLinksIfOwnerMatch . Если ваш сервер требует этого, а у вас его нет, вы получите ответ « 403 Forbidden » на все запросы. Это должно быть легко заметить в ваших лог-файлах. Если вам это нужно, просто добавьте эту строку перед кодом предотвращения хотлинков:

Опции +FollowSymLinks

Разрешить выборочную хотлинкинг

Есть несколько способов сделать это. Конечно, вы можете добавить доменное имя, которое вы хотите разрешить, в свой файл .htaccess, как указано выше, но что делать, если у вас есть определенные изображения, которые вы хотите, чтобы кто-нибудь использовал? Вот решение, которое я предпочитаю.

Создайте каталог на вашем сервере под названием « share» и создайте внутри него новый файл .htaccess, содержащий этот код:

RewriteEngine off

Это противодействует глобальному файлу .htaccess и разрешает хотлинкинг из этого каталога. Теперь вы можете защитить свою пропускную способность, но при этом разрешить горячую ссылку на определенные файлы!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *