Как запретить отдавать файлы другим сайтам

(Ответов: 10, Просмотров: 4908)
Страница 1 из 2 12 Последняя
  1. Sapienti sat Аватар для brainix
    • Регистрация: 01.01.2013
    • Сообщений: 1,925
    • Записей в дневнике: 1
    • Репутация: 817
    • Webmoney BL: ?
    Нашел правила для htaccess как сделать так, чтобы картинки отдавались только на мои сайты.

    PHP код:
    RewriteCond %{HTTP_REFERER} !^$
    RewriteCond %{HTTP_REFERER} !^[url]http://(www.)?site.ru/[/url] [nc]
    RewriteCond %{HTTP_REFERER} !^[url]http://(www.)?site2.ru/[/url] [nc]
    RewriteRule .*.(gif|jpg|png)$ [url]http://site.ru/img/ban_on_downloading.gif[/url][nc] 
    1 Насколько валиден этот код, может можно еще как-нибудь сделать?
    2 Как сделать так, чтобы гугл и яндекс видели картинки?
    3 Какое правило прописать чтобы отданные картинки кешировались?
    • 0
  2. Дипломник
    • Регистрация: 07.01.2013
    • Сообщений: 166
    • Репутация: 33
    • Webmoney BL: ?
    Тоесть ты хочешь сделать так, чтобы с твоего сайта не смогли скачивать картинки? Думаю вряд ли тебе это удастся реализовать, ибо если бы было все так просто, то зачем бы люди использовали watermark?
    • 0
  3. Sapienti sat Аватар для brainix
    • Регистрация: 01.01.2013
    • Сообщений: 1,925
    • Записей в дневнике: 1
    • Репутация: 817
    • Webmoney BL: ?
    Я хочу чтобы картинки не транслировались на других сайтах, это выжирает траф. Т.е. чтобы по прямой ссылке картинку просто так не открыть. А принтскрины не страшны.
    • 0
  4. [web-developer] Аватар для cOAPerator
    • Регистрация: 22.02.2011
    • Сообщений: 615
    • Репутация: 111
    • Webmoney BL: ?
    brainix, сам сталкивался с такой проблемой, только наоборот. Я брал постеры для фильмов с не очень большого сайта и все было бы хорошо, но жадный до трафа () админ того сайта вскоре мне лафу прикрыл - вместо постеров высветились рожицы свинок
    Он использовал онлайн-сервис подмены адресов картинок.
    Одноко данный способ почему то работал не на все изображения, из более чем двух сотен постеров примерно около 40-50 отображались по прежнему нормально. У меня подозрение, что он не все адреса картинок прогонял через этот сервис.
    Попробуй может поможет.

    ПС: после того как я убрал все ссылки на постеры он сервис ссылок убрал, насколько я понял это так же неплохо тормозило его сайт
    • 0
  5. Дипломник Аватар для Unick
    • Регистрация: 12.02.2013
    • Сообщений: 142
    • Репутация: 45
    моя рабочая версия такая:
    PHP код:
    RewriteEngine On 
    RewriteCond 
    %{HTTP_REFERER} !(site\.com\/)
    RewriteRule ^(.*)(gif|jpg|jpeg|png)$ http://site.com/images/error.png [L] 
    Цитата Сообщение от brainix Посмотреть сообщение
    1 Насколько валиден этот код, может можно еще как-нибудь сделать?
    насчет валидности... точка в регулярных выражениях - это любой символ, если добавить перед точкой обратный слеш, то это будет уже пониматься как точка

    Цитата Сообщение от brainix Посмотреть сообщение
    2 Как сделать так, чтобы гугл и яндекс видели картинки?
    думаю можно попробовать добавить
    PHP код:
    RewriteCond %{HTTP_REFERER} !(google\.[a-z]{1,3}\/)
    RewriteCond %{HTTP_REFERER} !(yandex\.[a-z]{1,3}\/) 
    Это позволит перейти из гугл (яндекс) картинок и увидеть нормальную картинку.

    Цитата Сообщение от brainix Посмотреть сообщение
    3 Какое правило прописать чтобы отданные картинки кешировались?
    [R=permanent]
    Последний раз редактировалось Unick; 13.02.2013 в 12:48.
    • 1

    Спасибо сказали:

    brainix(25.02.2013),
  6. Banned
    • Регистрация: 23.02.2013
    • Сообщений: 274
    • Репутация: 4
    А не лучше водяной знак на всю картинку полу прозрачный?
    • 0
  7. Гуру Аватар для ipreallyfire
    • Регистрация: 26.06.2012
    • Сообщений: 688
    • Репутация: 245
    • Webmoney BL: ?
    вот самые популярные правила для htaccesa, одно из них как раз то, что вам нужно:

    Развернуть текст


    1. Запрещаем загрузку файлов с внешних сайтов

    Вам надоели люди, которые размещают картинки, опубликованные на вашем сайте — на своих ресурсах, тем самым расходуя ваш траффик и создавая ненужную нагрузку на ваш хостинг? Данный код, размещенный в конце вашего файла .htaccess, позволит предотвратить загрузку ваших изображений — сторонними сайтами.
    Options +FollowSymlinks
    #Запрещаем загрузку файлов с внешних сайтов
    RewriteEngine On
    RewriteCond %{HTTP_REFERER} !^$
    RewriteCond %{HTTP_REFERER} !^http://(www.)?site.com/ [nc]
    RewriteRule .*.(gif|jpg|png)$ http://site.com/stop.gif[nc]


    Не забудьте изменить site.com на ваше доменное имя и создать изображение stop.gif, которое будет показано вместо запрошенной картинки.
    2. Блокируем все запросы от нежелательных User Agents

    Это правило позволяет заблокировать нежелательные User Agent, которые могут быть потенциально опасными или просто перегружать сервер ненужными запросами.
    #Блокируем плохих ботов и роботов
    SetEnvIfNoCase user-Agent ^FrontPage [NC,OR]
    SetEnvIfNoCase user-Agent ^Java.* [NC,OR]
    SetEnvIfNoCase user-Agent ^Microsoft.URL [NC,OR]
    SetEnvIfNoCase user-Agent ^MSFrontPage [NC,OR]
    SetEnvIfNoCase user-Agent ^Offline.Explorer [NC,OR]
    SetEnvIfNoCase user-Agent ^[Ww]eb[Bb]andit [NC,OR]
    SetEnvIfNoCase user-Agent ^Zeus [NC]
    <limit get="" post="" head="">
    Order Allow,Deny
    Allow from all
    Deny from env=bad_bot
    </limit>


    Список User Agent браузеров, роботов и пауков поисковых машин, веб-каталогов, менеджеров закачек, спам-ботов и плохих ботов можно найти на сайте List of User-Agents.
    3. Запрещаем доступ для всех, кроме указанных IP-адресов

    Если по какой-либо причине, вы хотите запретить всем или разрешить только отдельным IP-адресам доступ к вашему сайту — добавьте этот код в ваш .htaccess-файл:
    #Запрещаем доступ для всех, кроме указанных IP-адресов
    ErrorDocument 403 http://www.domainname.com
    Order deny,allow
    Deny from all
    Allow from 124.34.48.165
    Allow from 102.54.68.123


    Не забудьте изменить domainname.com на ваше доменное имя.
    4. Настраиваем SEO-Friendly 301 Redirect

    Если вы перенесли доменное имя (или свой подсайт) или хотите перенаправлять пользователя на определенную страницу (страницы), без санкций со стороны поисковых машин, используйте этот код:
    #Настраиваем SEO-Friendly 301 Redirect
    Redirect 301 /1/file.html http://www.site.com/2/file.html


    Не забудьте изменить site.com на ваше доменное имя, а /1/file.html и /2/file.html на соответствующие директории и страницы.
    5. Создаем собственные страницы ошибок

    Вам надоел стандартный вид страниц ошибок? Нет проблем — с помощью следующего кода, вы легко можете создать свою страницу и показывать пользователю именно ее:
    ErrorDocument 401 /error/401.php
    ErrorDocument 403 /error/403.php
    ErrorDocument 404 /error/404.php
    ErrorDocument 500 /error/500.php


    Не забудьте создать в корневой директории вашего сервера папку error и разместить в ней соответствующие файлы.
    6. Создаем черный список IP адресов

    Устали от спам-комментариев или определенного пользователя? Просто заблокируйте его IP с помощью следующего кода, добавляемого в .htaccess-файл.
    #Создаем черный список IP адресов
    allow from all
    deny from 145.186.14.122
    deny from 124.15.


    Узнать IP адреса комментаторов можно или в логах Apache или с помощью сервисов статистики. У многих CMS есть свои встроенные средства для мониторинга адресов посетителей. Например, в Drupal IP- адреса комментаторов можно увидеть в административной панели — Отчеты.
    7. Устанавливаем e-mail адрес по-умолчанию для администратора

    Используйте данный код, для того, чтобы установить e-mail адрес по-умолчанию для администратора сервера.
    #Устанавливаем e-mail адрес по-умолчанию для администратора
    ServerSignature EMail
    SetEnv SERVER_ADMIN default@domain.com


    Не забудьте заменить default@domain.com — своим e-mail адресом.
    8. Защищаем определенный файл

    Нижеследующий код позволяет вам запретить доступ к любому файлу — при запросе будет выдаваться ошибка 403. Для примера я закрыл доступ к самому файлу htaccess, повысив общий уровень безопасности сайта.
    #Защищаем .htaccess файл
    <files .htaccess="">
    order allow,deny
    deny from all
    </files>

    9. Сжимаем элементы с помощью mod_deflate

    В качестве альтернативы компрессии файлов с помощью Gzip, вы можете использовать mod_deflate (предположительно работает быстрее). Разместите следующий код в начале вашего файла .htaccess (также вы можете добавить перечисления .jpg|.gif|.png|.tiff|.ico):
    #Сжимаем элементы с помощью mod_deflate
    <ifmodule mod_deflate.c="">
    <filesmatch .(js|css)$="">
    SetOutputFilter DEFLATE
    </filesmatch>
    </ifmodule>

    10. Добавляем срок жизни в заголовки

    Данный код позволяет добавить сроки жизни в заголовки:
    #Добавляем срок жизни в заголовки
    <filesmatch .(ico|pdf|flv|jpg|jpeg|png|gif|swf)$="">
    Header set Expires «Wed, 21 May 2010 20:00:00 GMT»
    </filesmatch>

    11. Устанавливаем страницы по-умолчанию

    Обычно страницей по-умолчанию является index.html, однако с помощью этого кода вы можете настроить по-умолчанию любую другую страницу.
    #Устанавливаем альтернативную страницу по-умолчанию
    DirectoryIndex about.html

    12. Защищаем паролем папки и файлы

    Вы можете включить проверку пароля для доступа в любую папку или файл на вашем сервере, используя этот код:
    #защита паролем файла
    <files secure.php="">
    AuthType Basic
    AuthName «Prompt»
    AuthUserFile /pub/home/.htpasswd
    Require valid-user
    </files>
    #защита паролем папки
    resides
    AuthType basic
    AuthName «This directory is protected»
    AuthUserFile /pub/home/.htpasswd
    AuthGroupFile /dev/null
    Require valid-user


    Для того, чтобы организовать доступ к файлу по паролю, необходимо создать файл .htpasswd и внести в него пару логин-пароль в формате userassword.

    Однако в этом случае пароли будут хранится в открытом виде, что не слишком хорошо с точки зрения безопасности. Поэтому оптимальнее пароль зашифровать. Для этого воспользуйтесь сервисами генерации записей в файлы .htpasswd. Например, вот таким.

    В нашем примере файл с паролями доступа лежит в корневой директории сайта и называется .htpasswd. Директория указывается от корня сервера и если путь будет некорректным — Apache, не получив доступа к файлу, откажет в доступе к папке любому пользователю — в том чилсе и тому, который ввел правильную пару логин:пароль.
    13. Перенаправляем со старого домена — на новый

    Используя .htaccess, вы можете настроить перенаправление со старого доменного имени на новое, добавив следующий код:
    #Перенаправляем со старого домена old.com — на новый
    RewriteEngine On
    RewriteRule ^(.*)$ http://www.new.com/$1 [R=301,L]


    Перенаправление используется в том случае, если вы переносите свой существующий сайт на новое доменное имя. В этом случае любой пользователь, который наберет в адресной строке www.old.com — будет перенаправлен на www.new.com.
    14. Усиливаем кеширование

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

    Таким образом, при повторной загрузке страницы браузер посетителя не будет заново скачивать изображения, скрипты или CSS, а выведет те файлы, которые уже хранятся в его кеше. Вы можете изменить срок жизни кеша, путем корректирования его значения в годах (year), месяцах (month) или, например — секундах (seconds). В примере указан 1 год.
    #Усиливаем кеширование
    FileETag MTime Size
    <ifmodule mod_expires.c>
    <filesmatch ".(jpg|gif|png|css|js)$">
    ExpiresActive on
    ExpiresDefault «access plus 1 year»
    </filesmatch>
    </ifmodule>

    15. Сжимаем компоненты сайта путем включения Gzip

    При использовании Gzip, сервер будет сжимать файлы перед отправкой их пользователю, ввиду чего ваш сайт будет грузиться быстрее.
    #Сжимаем компоненты сайта путем включения Gzip
    AddOutputFilterByType DEFLATE text/html text/plain ..
    .. text/xml application/xml application/xhtml+xml ..
    .. text/javascript text/css application/x-javascript
    BrowserMatch ^Mozilla/4 gzip-only-text/html
    BrowserMatch ^Mozilla/4.0[678] no-gzip
    BrowserMatch bMSIE !no-gzip !gzip-only-text/html


    Обратите внимание, что включение компрессии приведет к большей нагрузке на процессор сервера. Здесь строка AddOutputFilterByType записывается в одну длинную строчку с двумя нижними (все .. нужно убрать).
    16. Удаляем «category» из URL

    Для изменения ссылки yourdomain.com/category/blue на yourdomain.com/blue, просто добавьте следующий код в конце вашего .htaccess файла.
    #Удаляем category из URL
    RewriteRule ^category/(.+)$ http://www.site.com/$1 [R=301,L]


    Не забудьте изменить www.site.com на ваше доменное имя.
    17. Запрещаем просмотр содержимого папки

    Для того, чтобы ограничить доступ к директориям, которые могут содержать разнообразную информацию и для обеспечения безопасности сервера, добавьте этот код в файл .htaccess
    #Запрещаем просмотр содержимого папки
    Options All —Indexes

    18. Перенаправляем свою RSS-ленту на FeedBurner

    Покажем как это можно сделать на примере RSS-ленты Drupal на сервис Google Feedburner.
    #Перенаправляем RSS-ленту Drupal на FeedBurner
    <ifmodule mod_rewrite.c="">
    RewriteEngine on
    RewriteCond %{HTTP_USER_AGENT} !FeedBurner [NC]
    RewriteCond %{HTTP_USER_AGENT} !FeedValidator [NC]
    RewriteRule ^rss.xml$ http://feeds.feedburner.com/yourfeed [R=302,NC,L]
    </ifmodule>


    Изначально необходимо зарегистрировать ленту своего блога в сервисе Feedburner. Далее не забудьте заменить yourfeed на имя вашей ленты уже в Feedburner.
    19. Запрещаем комментарии от пользователей без Referrer

    Чаще всего спам-боты обращаются напрямую к файлу комментариев, например к wp-comments-post.php, не заходя на страницы записей вашего блога. Приведенный ниже код позволяет заблокировать комментарии, отправленные пользователями, которые пришли «из ниоткуда», позволяя комментировать только тем читателям, которые перешли на страницу вашего блога с каких-либо других страниц (например, результатов поиска Google).
    #Запрещаем комментарии от пользователей без Referrer
    RewriteEngine On
    RewriteCond %{REQUEST_METHOD} POST
    RewriteCond %{REQUEST_URI} .comment\/reply\/*
    RewriteCond %{HTTP_REFERER} !.*yourblog.com.* [OR]
    RewriteCond %{HTTP_USER_AGENT} ^$
    RewriteRule (.*) ^http://%{REMOTE_ADDR}/$ [R=301,L]


    Не забудьте заменить yourblog.com на доменное имя вашего блога.
    20. Убираем расширение файла из URL

    Данный код позволяет удалить расширение файла .php (вы можете изменить его на любое другое, например — .html) из URL-адресов страниц.
    #Убираем расширение файла из URL
    RewriteRule ^(([^/]+/)*[^.]+)$ /$1.php [L]

    21. Защищаем сайт

    Данный код позволяет защитить сайт от scripts enjection и нежелательных модификаций _REQUEST и/или GLOBALS:
    #Включаем отслеживание сим-ссылок
    Options +FollowSymLinks
    #Запускаем url_rewriting
    RewriteEngine On
    #Блокируем все ссылки, содержащие <script>
    RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
    #Блокируем все скрипты, которые пытаются изменить переменные PHP Globals:
    RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
    #Блокируем все скрипты, которые пытаются изменить переменную _REQUEST:
    RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
    #Перенаправляем все подобные на страницу с ошибкой 403 — запрещено
    RewriteRule ^(.*)$ index.php [F,L]

    22. Перенаправляем посетителя с помощью директивы RedirectMatch и регулярных выражений

    Еще одна полезная директива, рекомендуемая к использованию — RedirectMatch. Цитата: «Эта директива позволяет в качестве запрашиваемого адреса использовать регулярное выражение (пересылка не „с документа“, а „со всех документов, типа ...“). Редирект внешний — браузеру сообщается о необходимости загрузить другую страницу.

    Синтаксис:
    RedirectMatch [status] regexp URL


    Значения статусов (код возврата веб-сервера) стандартные:

    permanent (301 — постоянный редирект), temp (302 — временный редирект, приходите ещё), seeother (303 — летим туда, там много вкусного), gone (410 — удалён навсегда).

    Пример:

    То же перенаправление со старого домена на новый без подключения RewriteEngine:
    RedirectMatch 301 ^(.*)$ www.domainname.com/$1


    От себя добавлю, что вы можете использовать не только http-статусы, но и другие условия:
    RedirectMatch (.*)\.gif$ http://www.myserver.com$1.png
    RedirectMatch (.*\.jpg)$ http://www.myanother.com$1


    Обязательно сделайте резервную копию файла .htaccess до внесения изменений и проверьте работоспособность всего сайта — после добавления новых строк.
    23. Защита от прямых ссылок для изображений через .htaccess

    Хотлинк (Hotlink) — вставка прямых ссылок изображений или файлов с одного сайта на другие. Этот прием используется довольно часто, ну например, у вас на сервере не хватает места для хранения картинок и вы пользуетесь каким-либо бесплатным сервисом для хранения файлов изображений, т.е. загружаете картинку, получаете URL и вставляете его на свой сайт.

    В итоге: вы сохраняете место для вашего сайта и используете пропускную способность хостинга для картинок, но это уже не ваше дело. Но вот как быть, если кто-то решил, что ваш сайт можно использовать как подобный сервис.

    Как не стать бесплатным поставщиком изображений и файлов?

    Есть ли защита от этого? Да, есть! Чтобы запретить другим сайтам пользоваться вашим трафиком и/или просто указывать прямые ссылки на ваши файлы (картинки), то добавьте в ваш .htaccess файл следующие строки:
    # Запретить другим сайтам использовать прямые ссылки на ваши картинки
    RewriteCond %{HTTP_REFERER} !^$
    # Дальше список разрешенных доменов
    RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?sitename.ru.*$ [NC]
    RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?sitename.ru:80.*$ [NC]
    # IP сайта (домена)
    RewriteCond %{HTTP_REFERER} !^http(s)?://111.111.111.111.*$ [NC]
    RewriteCond %{HTTP_REFERER} !^http(s)?://111.111.111.111:80.*$ [NC]
    RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?yandex.ru [NC]
    RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?google. [NC]
    # RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?домен_дружественного сайта.ru [NC]
    RewriteCond %{HTTP_REFERER} !search?q=cache [NC]
    # Форматы файлов, для которых устанавливается защита
    # Выводит ошибку 403
    # RewriteRule \.(jpe?g|bmp|gif|png|css|mov|swf|dcr|exe|rar|avi|vob|zip|pdf|txt|doc|flv|mp3|mp4)$ — [NC,F,L]
    # или показывает спецрисунок вместо указанного
    RewriteRule .*\.(jpe?g|bmp|gif|png)$ files/images/nohotlink.jpg [NC,L]


    В итоге все остальные сайты получат ошибку 403 Forbidden (т.е. Доступ запрещен) и ваша пропускная способность больше «не работает на других».
    24. ImageCache и защита от хотлинка через .htaccess

    Для ImageCache предыдущий пункт работать не будет, поэтому добавляем такие настройки:
    SetEnvIfNoCase Referer «^$» local_ref=1
    # Allowed domains
    # Далее разрешенные домены
    SetEnvIfNoCase Referer «^http://(www\.)?domain\.ru» local_ref=1
    SetEnvIfNoCase Referer «^http://(www\.)?domain\.com» local_ref=1
    # File extensions that you want to protect
    # Расширения файлов, которые нужно защитить
    <FilesMatch "\.(bmp|jpe?g|gif|png)">
    Order Allow,Deny
    Allow from env=local_ref
    </FilesMatch>


    Теперь у нас есть и защита от хотлинка и модуль ImageCache — вместе они работают превосходно. Одно «но» — таким способом, как вы видите не получится выдавать другую картинку; только защита своих изображений, что и является основной целью.
    [свернуть]
    • 4

    Спасибо сказали:

    brainix(25.02.2013), Meksikoz(05.06.2013), Rix(04.06.2013), Ростислав(02.06.2013),
  8. Гуру Аватар для Asin
    • Регистрация: 20.07.2010
    • Сообщений: 1,060
    • Репутация: 436
    Решение вопроса можно найти по запросу:
    антилич htaccess
    также существуют специальные антилич-скрипты.
    Twaego HP - Must Have софт по работе с Twitter http://goo.gl/cvQrUI
    Twaego RG Plus - регистратор Twitter аккаунтов http://goo.gl/E2eUcR
    • 1

    Спасибо сказали:

    brainix(25.02.2013),
  9. Дипломник Аватар для Unick
    • Регистрация: 12.02.2013
    • Сообщений: 142
    • Репутация: 45
    Цитата Сообщение от Unick Посмотреть сообщение
    думаю можно попробовать добавить
    PHP код:
    RewriteCond %{HTTP_REFERER} !(google\.[a-z]{1,3}\/)
    RewriteCond %{HTTP_REFERER} !(yandex\.[a-z]{1,3}\/)  
    Это позволит перейти из гугл (яндекс) картинок и увидеть нормальную картинку.
    Извините, это предположение неверно...
    редактировать подпись
    • 0
  10. Sapienti sat Аватар для brainix
    • Регистрация: 01.01.2013
    • Сообщений: 1,925
    • Записей в дневнике: 1
    • Репутация: 817
    • Webmoney BL: ?
    Unick, а как тогда верно?
    • 0
Страница 1 из 2 12 Последняя

Похожие темы

Темы Раздел Ответов Последний пост
Когда PR присваивается другим страницам сайта кроме главной?
Google 7 16.02.2012 13:17
Сервис для заметок с возможностью чтения другим человеком.
Софт, скрипты, сервисы 1 22.09.2011 12:42
Сервис для заметок с возможностью чтения другим человеком.
Оффтоп и свободные темы 0 17.09.2011 23:24
Какой процент от заказа на продвижение отдавать партнеру?
Вопросы от новичков 7 06.09.2011 20:12
Как заработать на сайте. Все, что прошел сам, и рекомендую другим
Дайджест блогосферы 1 09.08.2010 21:23

У кого попросить инвайт?

Вы можете попросить инвайт у любого модератора:

Информеры