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

Форум PHP

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

 

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

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

тема: "Попытка передачи данных с другого хоста" - это можно легко обойти! Что делать???
 
 автор: irr   (25.12.2005 в 17:48)   письмо автору
 
 

В учебнике "PHP5 в примерах" и еще вот в этой теме:
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=1511&page=1
приведен пример защиты от "Попытки передачи данных с чужого хоста".


<?php 
  
// Инициируем сессию 
  
session_start(); 
?> 
<form action=handler.php method=post> 
Имя : <input type=text name=name><br> 
Пароль : <input type=password name=pass><br> 
<input type=submit name=send value=Отправить> 
<input type=hidden name=session_id value=<?php echo session_id();?>
</form> 


и далее:


<?php 
  
// Инициируем сессию 
  
session_start(); 
  
// Сравниваем переданный идентификатор из формы с 
  // текущим идентификатором сессии 
  
if($_POST['session_id'] != session_id()) 
  { 
    exit(
"Попытка передачи данных с другого хоста. Скрипт остановлен."); 
  } 
  
// Дальнейшая обработка данных... 
?>  


У меня возникли аналогичные проблемы в чате и я хотел применить этот прием, но сразу же сообразил, что его легко обойти: как только пользователь попадает в первую часть скрипта, он тут же узнает ID своей сессии через "Просмотр страницы в виде HTML". Остается подставить его в соответствующее поле воссозданной формы - и вторая часть скрипта никак не спасает от передачи данных злоумышленника.

Как с этим бороться?

   
 
 автор: Саня   (25.12.2005 в 18:12)   письмо автору
 
   для: irr   (25.12.2005 в 17:48)
 

Можно проверить HTTP_REFERER.

   
 
 автор: cheops   (25.12.2005 в 19:50)   письмо автору
 
   для: irr   (25.12.2005 в 17:48)
 

Не так просто... дело в том, что если пользователь не пошлёт SID сессии в cookie - сервер назначит ему новый идентификатор сессии, поэтому ему необходимо будет подделать сессию, как это осуществляется в теме по ссылке http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=9050. Если злоумышленики подделывают сессионный cookie, можно средствами GDLib генерировать изображение с контрольным числом, который должен ввести пользователь.

   
 
 автор: irr   (25.12.2005 в 22:35)   письмо автору
 
   для: cheops   (25.12.2005 в 19:50)
 

спасибо, буду разбираться... но это если с куки - а если просто сессия без куки? я пробовал - она легко подделывается.

   
 
 автор: cheops   (26.12.2005 в 02:03)   письмо автору
 
   для: irr   (25.12.2005 в 22:35)
 

Да в этом случае задача злоумышленика значительно облегчается, именно поэтому существует тенденция перевода SID из адресной строки в cookie.

   
Rambler's Top100
вверх

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