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

Форум PHP

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Безопасность авторизации в PHP

Сообщения:  [1-10]    [11-20]  [21-24] 

 
 автор: method   (02.07.2005 в 17:41)   письмо автору
 
   для: cheops   (02.07.2005 в 17:13)
 

cheops как всегда премного благодарен за оч хороший ответ =)

ЗЫ:хотя мне показалось что раньше чем понедельник я его не услышу,
потому сгонял на пхп клаб пришлось региться и создавать такую ж тему.......
ну да ладно лишним не будет.....

спасибо!

   
 
 автор: cheops   (02.07.2005 в 17:19)   письмо автору
 
   для: TrunK   (02.07.2005 в 14:48)
 

Это как раз и решается при помощи прошивки сессии - помещение в скрытое поле уникальное значение, которое знает только сайт. method-у этого не достаточно.

PS Проблема в том, что HTML-форма на самом деле находится не на сервере - она отправляется клиенту и клиент, заполнив её отправляет данные на сервер. Поэтому данные всегда идут с клиентской машины. Поэтому можно поставить робот, который со скоростью 20 сообщений в минуту 24 часа в сутки будет постить сообщения... Вот, кстати, ещё одно решение - проверять сколько времени прошло с момента последнего помещения сообщения с данной сессии - если менее 5 секунд, не помещать повторные сообщения. Если таких попыток будет больше 10 - блокировать размещение сообщений с данной сессии.

   
 
 автор: cheops   (02.07.2005 в 17:13)   письмо автору
 
   для: method   (02.07.2005 в 13:45)
 

Нет другой автоматической проверки у вас не выйдет, не зависимо от того, знаю я это или нет :))) так как это не позволяет сам протокол HTTP - он не сессионный. Это означает, что сервер, отправившего HTML-форму клиенту, дальнейшая её судьба не волнует, с какого адреса придёт ответ, получал ли этот клиент перед этим форму, сокет ли обращается или какой другой зверь, Web-серверу совершенно наплевать. Именно для решения проблем, возникающих в этом случае были введены cookie и сессии. Ничего лучшего на настоящий момент нет.

Вы можете поставить дополнительную проверку на USER_AGENT, но USER_AGENT легко подделать и вряд ли это остановит злоумышленика. Возможно слабым утешением вам будет тот факт, что за всё время существование нашего форума случаев автофлуда не было, хотя его посещает большое число посетителей подавляющее большинство из которых неслабо разбирается в PHP.

   
 
 автор: method   (02.07.2005 в 16:25)   письмо автору
 
   для: TrunK   (02.07.2005 в 14:48)
 

привидите пример....

   
 
 автор: TrunK   (02.07.2005 в 14:48)   письмо автору
 
   для: method   (02.07.2005 в 13:45)
 

Поставить проверку на то, с какого сайта пришли данные...

   
 
 автор: method   (02.07.2005 в 13:45)   письмо автору
 
   для: cheops   (02.07.2005 в 11:37)
 

cheops скажите не томите если
знаете что нить кроме того что вы уже
посоветовали, т.е.

<?php 
<input type="hidden" name="id" value=" <?php print session_id();?>"
?>

   
 
 автор: cheops   (02.07.2005 в 11:37)   письмо автору
 
   для: method   (02.07.2005 в 06:57)
 

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

   
 
 автор: method   (02.07.2005 в 06:57)   письмо автору
 
   для: cheops   (01.07.2005 в 20:08)
 

тогда может как нибудь сравнивать чё нить с чем нить относительно
scriptname и его место расположения?
вот такое даст гарантию:

<?php <form action="<?=$_SERVER["SCRIPT_NAME"]?>" method=POST>
?>

???

   
 
 автор: cheops   (01.07.2005 в 20:08)   письмо автору
 
   для: method   (01.07.2005 в 15:07)
 

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

   
 
 автор: method   (01.07.2005 в 15:07)   письмо автору
 
   для: Гость..   (01.07.2005 в 14:45)
 

Из статьи Владислава Путяка:

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

<?php sleep(1); //задержка на 1 секунду?>

Вот такие пироги....

А у меня чуть другая задача,пресечь отправку из форм
с других хостов, читай посты выше...

PS cheops вы где?

   

Сообщения:  [1-10]    [11-20]  [21-24] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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