Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Apache

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как в .htaccess точно определить, что запрос сделан со страницы сайта?
 
 автор: Crimear   (07.05.2008 в 07:13)   письмо автору
 
 

Задача такая: для каждого запроса картинки, js-файла или scc-файла нужно однозначно определять в .htaccess-файле сайта - сделан ли запрос со страницы этого сайта или извне. Чтобы использовались они только по назначению, и их нельзя было закачивать на чужие страницы (или просто напрямую).

Обычно по этому поводу сразу начинают говорить про анализ реферера. Что-то вроде этого:


RewriteCond %{HTTP_REFERER} !^http://mysite/.*$ [NC]
RewriteRule .*\.(jpg|gif|png|css|js)$ - [F,NC]


Но ведь реферер - штука ненадёжная. Его и подделать несложно, и пользователь может в браузере отключить, и файрволлом его передача может блокироваться.

Так существует ли способ надёжно определить пусть не источник любого запроса, так хотя бы то, что файл запрошен для загрузки на страницу собственного сайта?

Второй вопрос: какие из заголовков и других служебных данных, передаваемых браузерами вместе с запросом, передаются в обязательном порядке, и не могут быть подделаны? Может, среди них найдётся для решения поставленной задачи что-то более подходящее, чем реферер. Да и для решения других задач такая информация была бы полезна.

   
 
 автор: sim5   (07.05.2008 в 08:28)   письмо автору
 
   для: Crimear   (07.05.2008 в 07:13)
 

А что вам мешает отдавать (подключать) JS, CSS, да и картинки (если уж они такие ценные) посредством РНР-сценария?

   
 
 автор: Crimear   (07.05.2008 в 13:35)   письмо автору
 
   для: sim5   (07.05.2008 в 08:28)
 

>да и картинки (если уж они такие ценные)

При чём здесь "ценные"? Защищать картинки запретительными способами бессмысленно - их и прямо со страниц сайта любой не-совсем-чайник себе на память скопирует. Или из кэша возьмёт, вместе с js- и scc-файлами.

А вот ограничить ненужный посторонний трафик и лишнюю нагрузку на сайт и сервер совсем не помешает - те самые трафик и нагрузку, которые генерируются, когда ваши файлы закачивает непонятно кто непонятно зачем и непонятно с какой интенсивностью. Я просто хочу, чтобы файлы использовались только для того, для чего они предназначены - для создания страниц моего сайта.

>А что вам мешает отдавать ... картинки ... посредством РНР-сценария?

Не подскажите, как отдавать картинки посредством PHP? Рассматривал такой способ как один из вариантов и пробовал, но у меня ничего не получается :(. Да, в PHP-то я могу определить, что картинка запрошена по назначению. А вот как потом отдать картинку так, как она есть, как-будто ни через какой скрипт запрос и не проходил, я не знаю. (Естественно, использование всяких "PHP-фотошопств" - imagecreatefromjpg() и т.п. - здесь совершенно неуместы.)

   
 
 автор: sim5   (07.05.2008 в 13:46)   письмо автору
 
   для: Crimear   (07.05.2008 в 13:35)
 

Волков бояться - не пить шампанского! Если вы так беспокоитесь, что вас "удушат" лишним трафиком - закройте папки со своими JS, CSS, IMG, etc файлами посредством .htaccess, ответ на запрос этих папок напрямую будет краток, а значит и о расходе трафика беспокоится не надо будет. Любой файл можно отдать РНР скриптом. Как это сделать с картинками - в раздел РНР, там примеров этому несчетное количество. Как JS, пример (простой) можно посмотреть здесь: http://softtime.ru/forum/read.php?id_forum=4&id_theme=52636&page=2

   
 
 автор: Atheist   (07.05.2008 в 12:29)   письмо автору
 
   для: Crimear   (07.05.2008 в 07:13)
 

> передаются в обязательном порядке, и не могут быть подделаны?
Подделать можно любой заголовок. Но вот только по заголовку Host Apache определяет с какому из сайтов обращаются.

> Так существует ли способ надёжно определить пусть не источник любого запроса, так хотя бы то, что файл запрошен для загрузки на страницу собственного сайта?
Нет.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования