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

Форум PHP

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

 

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

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

тема: Вопрос по $HTTP-REFERER
 
 автор: Valeri   (05.02.2005 в 18:56)   письмо автору
 
 

Как можно сделать что-бы $HTTP-REFERER не передавалась ?
На сайтах САР при серфинге есть такая функция "отключить передачу $HTTP-REFERER", тогда на просматриваемом сайте не она не определяется и вместо нее, если записавать в БД кто и откуда пришел, идет просто пустата.
Просто на одном форуме где как бы собираются, по некоторым понятиям, крутые программисты на PHP был затронут этот вопрос, так же там был затронут вопрос можно ли эту переменную подменить и все в один голос кричали, что затереть, а тем более подменить ее нельзя и что это все бред сумашедшыч кто утверждает обратное.
Но вот я знаю что в САР она точно отключается !!!
Насчет подмены ничего утверждать не буду, так как не знаю.
Вот и хотелось бы выиснить этот вопросик. Если возможно конечно :)

   
 
 автор: isset   (05.02.2005 в 18:59)
 
   для: Valeri   (05.02.2005 в 18:56)
 

Подменить легко :)

   
 
 автор: Valeri   (05.02.2005 в 20:18)   письмо автору
 
   для: isset   (05.02.2005 в 18:59)
 

а поподробнее можно ?

   
 
 автор: cheops   (05.02.2005 в 22:15)   письмо автору
 
   для: Valeri   (05.02.2005 в 18:56)
 

Это определяется отправляет клиент заголовок, например, "Referer:http://www.google.ru/" или нет. Так как это ваша собственная машина вы можете отправлять всё что угодно - никто это проконтролировать не может, точно так же как никто не может проконтролировать заголовки отправляемые из PHP-скрипта:
<?php
  header
("Referer:http://www.google.ru/");
?>

В IE такой опции нет, но в других браузерах опцию отключения referer можно найти без труда (помоему в Opera, точно есть), наверняка так же в Internet имеется достаточное количество прокси-серверов, отбрасывающих эту информацию. Вся информация которая отправляется от клиента может быть без особых усилий отредактирована, особенно, если в качестве клиента выступает PHP-скрипт.

   
 
 автор: Valeri   (06.02.2005 в 05:07)   письмо автору
 
   для: cheops   (05.02.2005 в 22:15)
 

а как это прилепить если идет переход по ссылке ?

   
 
 автор: glsv (Дизайнер)   (06.02.2005 в 12:26)   письмо автору
 
   для: Valeri   (06.02.2005 в 05:07)
 

Только если это будет не чистая ссылка, а ссылка на специльный скрипт, который обрежет REFERER и перенаправит посетителя на нужную страницу.

   
 
 автор: Valeri   (06.02.2005 в 19:05)   письмо автору
 
   для: glsv (Дизайнер)   (06.02.2005 в 12:26)
 

и как этот специальный скрипт должен выглядить ?

   
 
 автор: Valeri   (08.02.2005 в 06:52)   письмо автору
 
   для: Valeri   (06.02.2005 в 19:05)
 

так что, так и не скажите как этот скрипт должен выглядить ?

   
 
 автор: glsv (Дизайнер)   (08.02.2005 в 09:20)   письмо автору
 
   для: Valeri   (08.02.2005 в 06:52)
 

Потерял вашу тему :( Постараюсь сегодня ответить.

   
 
 автор: Valeri   (08.02.2005 в 11:53)   письмо автору
 
   для: glsv (Дизайнер)   (08.02.2005 в 09:20)
 

буду вам признателен

   
 
 автор: glsv (Дизайнер)   (08.02.2005 в 16:34)   письмо автору
 
   для: Valeri   (06.02.2005 в 05:07)
 

Затереть Referer оказалось легко.
Создаем специальный файл ref.php, который перенаправляет запрос на новую страницу, но без referera/

<?
echo "<HTML><HEAD>
        <META HTTP-EQUIV='Refresh' CONTENT='0; URL="
.$_GET['link']."'>
        </HEAD>"
;
?>


И во всех ссылках пишем URL следующего вида:

<a href="ref.php?link=http://www.domain.ru/page.php">Ссылка</a>

Таким образом, переменная $_SERVER['HTTP_REFERER'] затирается.

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

   
 
 автор: Valeri   (08.02.2005 в 17:10)   письмо автору
 
   для: glsv (Дизайнер)   (08.02.2005 в 16:34)
 

вот с помощью настроек снрвера это было бы более интересно

   
 
 автор: glsv (Дизайнер)   (09.02.2005 в 00:49)   письмо автору
 
   для: Valeri   (08.02.2005 в 17:10)
 

А нет, про настройки сервера это я не правильно сказал.
Суть именно в том, что значание REFERER можно изменить только специальным скриптом. Таким образом, если ссылка будет чистая и будет указывать сразу на другой сайт, то изменить REFERER программным способом никак нельзя. Посколько обращения ни к нашему серверу, ни к специальному скрипту нет. Обращение идет сразу на другой сайт.
А вот если сделать пересылку через специальный скрипт (как я и проводил в примере), то все можно поменять.

Либо другой вариант: использовать специальный браузер, который будет обрезать REFERER-ы, так как именно браузер передает эти значения.

   
 
 автор: Valeri   (09.02.2005 в 04:28)   письмо автору
 
   для: glsv (Дизайнер)   (09.02.2005 в 00:49)
 

О.К.
Большое Вам спасибо. Поэксперементирую.

   
 
 автор: glsv (Дизайнер)   (09.02.2005 в 07:45)   письмо автору
 
   для: Valeri   (08.02.2005 в 17:10)
 

Естественно писать ссылки в этом формате и тем более менять все ссылки на странице совсем не лучший вариант. Но можно менять их автоматически.
При формировании страницы можно задерживать выход страницы с помощью функции ob_start(). Страница при этом помещается в буфер и с ней можно работать как с текстовой переменной. Далее пропустить эту переменную через регулярное выражение, которое заменит все "внешние" ссылки на ссылки через специальный скрипт. И после замены вывести страницу в браузер.

   
 
 автор: Valeri   (09.02.2005 в 16:54)   письмо автору
 
   для: glsv (Дизайнер)   (09.02.2005 в 07:45)
 

что то как не кручу нечего не получается :(
вот конкретный пример

<frameset rows="70,*,0" frameborder=yes border="0" bordercolor="#9A9AFE">
 <frame name="topFrame" scrolling="NO" noresize src="blablabla.php" marginheight="0" marginwidth="0">
   <frame src="$linck" name=msg scrolling=yes marginwidth=0 marginheight=0>
  </frameset>
  <frame name='hideFrame' MARGINWIDTH='0' MARGINHEIGHT='0' SCROLLING='yes' NoResize>
 </frameset>

как сделать что-бы на сайте $linck не определилась или подменилась $HTTP-REFERER ?

   
Rambler's Top100
вверх

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