Имеется такая вот задача:
Нужно написать скрипт авторизации с защитой от перебор паролей и ограничением количества запросов от пользователей.
А так же с хорошо продуманной авторизацией.
Код я еще не написал, хочу выяснить, с Вашей помощью, как лучше это сделать.
Вот мысли которые у меня имеются:
1)Принцип авторизации:
Юзер ввел логин и пароль. Фильтруем эти данные, хешируем пароль. После чего делаем запрос SQL, если вернулся положительный результат, значить пользователь такой имеется. Генерируем случайную строку, и записываем ее в базу к данным об этом пользователе. Потом помещаем эту строку в сессию. Таким образом мы можем проверить подлинность пользователя сравнив эту строку с той, что записана у нас в базе, потому, что каждый раз, у каждого пользователя эта строку будет уникальной. При каждом следующем входе, строка будет снова генерироваться. Авторизация будет одноразовой.
2) Защита от перебора паролей.
Каждый раз при неправильно введенных данных, в базу данных записывается число, которое равно числу неверно введенной информации(число попыток авторизации). По истечению определенного количества этих попыток в .htacces мы блокируем IP адрес с которого пытались авторизоваться и можно еще заблокировать пользователя под которым пытались войти в систему.
3)Ограничение количества запросов от пользователей:
Можно организовать на подобии второго пункта.
Вот и все. Жду ваших комментариев.
Спасибо!
Спустя 42 минуты, 37 секунд (8.08.2009 - 21:46) Sylex написал(а):
ой... все гораздо проще...
Цитата (ApuktaChehov @ 9.08.2009 - 00:03) |
Генерируем случайную строку |
зачем эта строка вообще? Если сессия есть - юзер авторизован, если нет - нет. В любом случае - сессия сгорит, и все сгорит. И пользователь не может ничего писать в сессию, т.е. все надежно. Зачем что-то генерировать? Это вы путаете поди с куками. Этот механизм уже реализован в сессиях. И тем более зачем ее менять постоянно... Прочитайте про сессии и как оно делается.
Спустя 12 минут, 27 секунд (8.08.2009 - 21:58) Sylex написал(а):
признаюсь, что в самом первом сайте своем делал не на сессиях авторизацию - а именно подобным образом на куках
но допер сам до этого как-то

но допер сам до этого как-то

Спустя 2 часа, 1 минута, 53 секунды (9.08.2009 - 00:00) ApuktaChehov написал(а):
Цитата (Sylex @ 8.08.2009 - 18:58) |
Этот механизм уже реализован в сессиях. И тем более зачем ее менять постоянно... Прочитайте про сессии и как оно делается. |
Не понял немного, кого менять?
Я вроде бы сам запутался. Прошу прощения. Эта строка, нужна как раз для многоразовой авторизации. Что бы не хранить на компе пользователя важную информацию.
А тогда каким образом можно определить что пользователь авторизован? По существованию сесии?
Спустя 1 час, 15 минут, 35 секунд (9.08.2009 - 01:16) kirik написал(а):
Цитата (ApuktaChehov @ 8.08.2009 - 16:00) |
А тогда каким образом можно определить что пользователь авторизован? По существованию сесии? |
Не.. По наличию в сессии информации о том, что пользователь авторизован (флаг logged_in например).
Спустя 8 часов, 28 минут, 56 секунд (9.08.2009 - 09:44) Sylex написал(а):
да что ж вы все такие ленивые, а...
http://www.phpfaq.ru/sessions
http://www.softtime.ru/bookphp/gl8_1.php
http://www.php.su/articles/?cat=examples&page=070
http://www.phpfaq.ru/sessions
http://www.softtime.ru/bookphp/gl8_1.php
http://www.php.su/articles/?cat=examples&page=070
Спустя 9 часов, 32 минуты, 13 секунд (9.08.2009 - 19:17) ApuktaChehov написал(а):
Как сессия работают я знаю. Мне больше интересует их практическое применение.
Насколько я понял делается так:
Если логин и пароль пользователя верны, тогда стартуем сессию и пишем в нее что то типо $_SESSION['register']=true;
Я правильно все понял?
Насколько я понял делается так:
Если логин и пароль пользователя верны, тогда стартуем сессию и пишем в нее что то типо $_SESSION['register']=true;
Я правильно все понял?
Спустя 9 минут, 38 секунд (9.08.2009 - 19:26) kirik написал(а):
Цитата (ApuktaChehov @ 9.08.2009 - 11:17) |
Если логин и пароль пользователя верны, тогда стартуем сессию и пишем в нее что то типо $_SESSION['register']=true; Я правильно все понял? |
Угу
Спустя 7 минут, 21 секунда (9.08.2009 - 19:34) glock18 написал(а):
Не важно что писать. Важно, чтобы было что потом сверять

Спустя 49 минут, 3 секунды (9.08.2009 - 20:23) ApuktaChehov написал(а):
Ок. Я все понял. Ждите скоро кода

Спустя 4 минуты, 22 секунды (9.08.2009 - 20:27) Sylex написал(а):
ApuktaChehov
нафик оно нам надо, ждать твой код
нафик оно нам надо, ждать твой код

Спустя 16 часов, 59 минут, 40 секунд (10.08.2009 - 13:27) ApuktaChehov написал(а):
Цитата (Sylex @ 9.08.2009 - 17:27) |
ApuktaChehov нафик оно нам надо, ждать твой код ![]() |
Ну.. можете не ждать...

А код я всеравно выложу.

Спустя 6 дней, 23 часа, 13 минут, 3 секунды (17.08.2009 - 12:40) ApuktaChehov написал(а):
Вопрос возник:
Каким образом лучше определить насколько часто от определенного пользователя исходят запросы к скрипту?
Каким образом лучше определить насколько часто от определенного пользователя исходят запросы к скрипту?
Спустя 3 дня, 19 часов, 40 минут, 23 секунды (21.08.2009 - 08:20) ApuktaChehov написал(а):
Ну... я наконец таки, добрался до этого благова дела и сразу возник вопрос.
Какими средствами определить сколько запросов от одного IP адреса поступает на сервер, за определенный интервал времени?
Какими средствами определить сколько запросов от одного IP адреса поступает на сервер, за определенный интервал времени?
Спустя 10 минут, 40 секунд (21.08.2009 - 08:31) Crэker написал(а):
ip адрес у пользователя может меняться. Можете сохранять у него в сессии количество обращений. При каждом следущем обращении будете увеличивать счетчик на 1
Спустя 10 минут, 8 секунд (21.08.2009 - 08:41) ApuktaChehov написал(а):
Надежно ли это? Сессиями? Каким образом это можно обойти?
Я тоже думал про сессии, но вот хочу выяснить, может есть более надежные способы.
Я тоже думал про сессии, но вот хочу выяснить, может есть более надежные способы.
Спустя 29 минут, 16 секунд (21.08.2009 - 09:10) Crэker написал(а):
Как мне известно, сессии подменять нельзя.
Вы зря заморачиваетесь. У вас что, сайт минобороны России?
Капчи - зло, забудьте уже наконец про них. Используйте другие способы, их немало.
А если уж так делаете, зачем блокировка? Хорошей капчи будет достаточно.
Вы зря заморачиваетесь. У вас что, сайт минобороны России?
Капчи - зло, забудьте уже наконец про них. Используйте другие способы, их немало.
А если уж так делаете, зачем блокировка? Хорошей капчи будет достаточно.
Спустя 1 час, 22 минуты, 8 секунд (21.08.2009 - 10:32) ApuktaChehov написал(а):
Мне нужна бокировка после определенного колличества попыток авторизации. Без использования баз данных и файлов.
Вот я и думаю...
Вот я и думаю...
Спустя 7 минут, 10 секунд (21.08.2009 - 10:40) twin написал(а):
Цитата |
Как мне известно, сессии подменять нельзя. |
Почти нельзя. Вернее это очень сложно и накладно.
А вот сбросить сессию можно. И тогда ограничение не сработает. Лучше всетаки привязывать к ипу, хотя и это тоже обходится.
Все дело в рентабельности. Crэker правильно заметил, если это супербанк с кучей денек, то тогда стоит задуряться жуткими способами. А для обычного ресурса вряд ли кто будет писать бота, что бы подобрать доступ к аккаунту. Невыгодно это.
Спустя 15 минут, 2 секунды (21.08.2009 - 10:55) ApuktaChehov написал(а):
Это будет система управления полиграфическим предприятием.
Как вы понимаете, там будет конфиденциальная информация.
Как вы понимаете, там будет конфиденциальная информация.
Спустя 14 минут, 34 секунды (21.08.2009 - 11:09) FatCat написал(а):
Цитата (ApuktaChehov @ 21.08.2009 - 11:55) |
система управления полиграфическим предприятием |
Цитата (ApuktaChehov @ 21.08.2009 - 11:32) |
Без использования баз данных и файлов |
... впрячь коня и трепетную лань...
Спустя 15 минут, 57 секунд (21.08.2009 - 11:25) ApuktaChehov написал(а):
Неееет...
Вы не поняли.
Система управления будет на PostgreSQL.
Я хотел саказать, что защиту от флуда сделать без использование баз данных и файлов. Т.е. что бы не забили сервер постоянными обращениями.
А прикольно получилось.
Самоучитель для чайников.
"Как сделать систему управления предприятием, без использования баз данных и файлов?"
Меня улыбнуло.

Вы не поняли.
Система управления будет на PostgreSQL.
Я хотел саказать, что защиту от флуда сделать без использование баз данных и файлов. Т.е. что бы не забили сервер постоянными обращениями.
А прикольно получилось.

Самоучитель для чайников.
"Как сделать систему управления предприятием, без использования баз данных и файлов?"
Меня улыбнуло.
_____________