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

Форум PHP

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

 

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

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

тема: Система защиты от отправки данных не из нашего сайта
 
 автор: pavluxa09   (11.04.2010 в 11:20)   письмо автору
 
 

Здравствуйте. Пожалуйста, помогите составить блок кода, который должен работать по следующему алгоритму: если на страницу где он находится переданы данные методом POST мы проверяем, если они были переданы с нашего сайта то пишем "Данные успешно получены", а если они были переданы с другого сайта или вобще не с сайта, то пишем "Произошла ошибка".

Это нужно для того, чтобы умные люди не копировали формы получения бонуса на свои сайты и их посетители не получали бонусы с их сайта.

Заранее спасибо!!!

  Ответить  
 
 автор: Trianon   (11.04.2010 в 11:44)   письмо автору
 
   для: pavluxa09   (11.04.2010 в 11:20)
 

данные методом POST передаются не с сайта, а с клиентской машины. Браузером.

Соответственно и бонусы у Вас люди получают запросом клиента.

  Ответить  
 
 автор: pavluxa09   (11.04.2010 в 11:49)   письмо автору
 
   для: Trianon   (11.04.2010 в 11:44)
 

Я понял. Я прошу код типа: если пришли данные методом POST и в слове реферер нет нашего домена то пишем ошибку!!!

  Ответить  
 
 автор: Trianon   (11.04.2010 в 11:51)   письмо автору
 
   для: pavluxa09   (11.04.2010 в 11:49)
 

так Вы ж всё и написали сами! :)
Осталось переписать на php.

REQUEST_METHOD
HTTP_REFERER

  Ответить  
 
 автор: pavluxa09   (11.04.2010 в 11:53)   письмо автору
 
   для: Trianon   (11.04.2010 в 11:51)
 

Да. Я это и прошу.

  Ответить  
 
 автор: Trianon   (11.04.2010 в 11:54)   письмо автору
 
   для: pavluxa09   (11.04.2010 в 11:53)
 

Ваш вариант кода?
В чем затруднения?
Будут ошибки в варианте - будем исправлять.

Запрос "напишите за меня просто потому что мне некогда" сразу предполагает, что Вы не договорились о цене.
Другие люди тоже свое время ценят.

  Ответить  
 
 автор: pavluxa09   (11.04.2010 в 11:56)   письмо автору
 
   для: Trianon   (11.04.2010 в 11:54)
 

Затрудняюсь в том, что незнаю как мне узнать есть ли в HTTP_REFERER мой домен. Какой функцией?

  Ответить  
 
 автор: Trianon   (11.04.2010 в 11:56)   письмо автору
 
   для: pavluxa09   (11.04.2010 в 11:56)
 

strpos()

parse_url()

  Ответить  
 
 автор: pavluxa09   (11.04.2010 в 11:59)   письмо автору
 
   для: Trianon   (11.04.2010 в 11:56)
 

У меня получилось такое:

if( $_SERVER['REQUEST_METHOD']=="POST" && strpos( $_SERVER['HTTP_REFERER'],$_SERVER['HTTP_HOST'] )==0 )
{
    die("<h1 align=\"center\">Произошла ошибка</h1><h2 align=\"center\">Вами была произведена попытка взлома системы.</h2>");
}

это правильно?

  Ответить  
 
 автор: Trianon   (11.04.2010 в 12:04)   письмо автору
 
   для: pavluxa09   (11.04.2010 в 11:59)
 

== 0 - неправильно.
Хотя работать может и будет.
До первого хитрого деятеля, который на своем сайте создаст папку с именем Вашего сайта.

  Ответить  
 
 автор: pavluxa09   (11.04.2010 в 12:05)   письмо автору
 
   для: Trianon   (11.04.2010 в 12:04)
 

==-1 ?

  Ответить  
 
 автор: Trianon   (11.04.2010 в 12:06)   письмо автору
 
   для: pavluxa09   (11.04.2010 в 12:05)
 

Вы гадать будете, или всё же в мануал заглянете?

  Ответить  
 
 автор: pavluxa09   (11.04.2010 в 12:07)   письмо автору
 
   для: Trianon   (11.04.2010 в 12:06)
 

ладно false

  Ответить  
 
 автор: Trianon   (11.04.2010 в 12:08)   письмо автору
 
   для: pavluxa09   (11.04.2010 в 12:07)
 

промах

  Ответить  
 
 автор: Trianon   (11.04.2010 в 12:07)   письмо автору
 
   для: Trianon   (11.04.2010 в 12:04)
 

поэтому всё же parse_url
Хотя ... referer же можно любой выплюнуть. Хоть с сайтом kremlin.ru :)
Так что защиту придется строить по-другому.

  Ответить  
 
 автор: pavluxa09   (11.04.2010 в 12:20)   письмо автору
 
   для: Trianon   (11.04.2010 в 12:07)
 

То что реферер можно подменить я знаю. Просто так уже будет тяжелее накрутить :)

if( $_SERVER['REQUEST_METHOD']=="POST" )
{
    $referer = parse_url( $_SERVER['HTTP_REFERER'] );
    $domain = parse_url( "http://".$_SERVER['HTTP_HOST'] );
    if( $referer['host']!=$domain['host'] )
    {
        die( "<h1 align=\"center\">Произошла ошибка</h1><h2 align=\"center\">Вами была произведена попытка взлома системы.</h2>" );
    }
    else
    {
        unset($referer);
        unset($domain);
    }
}

  Ответить  
 
 автор: Trianon   (11.04.2010 в 12:21)   письмо автору
 
   для: pavluxa09   (11.04.2010 в 12:20)
 

HTTP_HOST это уже сам host . Его не нужно парсить :)

Да. И я бы не стал так пафосно утверждать, что "произошла попытка взлома системы"
Не надо сгущать краски.
REFERER может быть срезан даже не самим клиентом.

  Ответить  
 
 автор: pavluxa09   (11.04.2010 в 12:24)   письмо автору
 
   для: Trianon   (11.04.2010 в 12:21)
 

Всё понял. Спасибо. Вы самый умный программист на свете!

  Ответить  
 
 автор: Trianon   (11.04.2010 в 12:28)   письмо автору
 
   для: pavluxa09   (11.04.2010 в 12:24)
 

Пожалуйста. Не надо сгущать краски.

  Ответить  
 
 автор: pavluxa09   (11.04.2010 в 12:28)   письмо автору
 
   для: Trianon   (11.04.2010 в 12:28)
 

Ок. Я написал типа ваш браузер не поддерживает этой технологии

  Ответить  
 
 автор: Trianon   (11.04.2010 в 12:30)   письмо автору
 
   для: pavluxa09   (11.04.2010 в 12:28)
 

Я бы написал правду. Наш сайт несовместим с настройками Вашего браузера.
Не надо обвинять браузер :)

  Ответить  
Rambler's Top100
вверх

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