|
|
|
| В учебнике "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". Остается подставить его в соответствующее поле воссозданной формы - и вторая часть скрипта никак не спасает от передачи данных злоумышленника.
Как с этим бороться? | |
|
|
|
|
|
|
|
для: irr
(25.12.2005 в 17:48)
| | Можно проверить HTTP_REFERER. | |
|
|
|
|
|
|
|
для: irr
(25.12.2005 в 17:48)
| | Не так просто... дело в том, что если пользователь не пошлёт SID сессии в cookie - сервер назначит ему новый идентификатор сессии, поэтому ему необходимо будет подделать сессию, как это осуществляется в теме по ссылке http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=9050. Если злоумышленики подделывают сессионный cookie, можно средствами GDLib генерировать изображение с контрольным числом, который должен ввести пользователь. | |
|
|
|
|
|
|
|
для: cheops
(25.12.2005 в 19:50)
| | спасибо, буду разбираться... но это если с куки - а если просто сессия без куки? я пробовал - она легко подделывается. | |
|
|
|
|
|
|
|
для: irr
(25.12.2005 в 22:35)
| | Да в этом случае задача злоумышленика значительно облегчается, именно поэтому существует тенденция перевода SID из адресной строки в cookie. | |
|
|
|