Защита от подбора пароля.

Royal Flash

-=MaestrO=-
Защита от подбора пароля.

Хотелось бы узнать, каким образом посетители этого форума решают проблему взлома пароля методом перебора.
Мой вариант:
1. Каждая неверная попытка входа записывается в БД в таблицу danger: ip, время, логин
2. При запуске любого доступного пользователю скрипта в самом его начале проверяется, не встречается ли IP пользователя в базе danger более 10 раз в течении последних 10 минут, и если да выдается заголовок ошибки Access denied. Эта же функция и чистит устаревшие записи.
 

Vladson

Сильнобухер
Я в одном скрипте поставил ограничение на время.

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

Линка

Новичок
Royal Flash
А я даю юзверю возможность 3 раза ввести пароль. если на 4 раз не верно форма приежает обратно, а на серваке кидаю его ip pass и log ,время входа и t=10(еще одно поле)в таблицу . злой юзверь еще раз вводит пароль и логин. скрипт находит его ip и pass и log в таблице в поле t находит 10 ,смотрит прошло ли 10 сек со времени его захода, если нет то отсылает форму обратно и так до тех пор пока не истечет время Ч(даже если тело вводит правильный пароль) . по истечении этих 10 сек(если он еще раз пришлет данные) проверяю его если все правильно пускаю в систему, а если неправильно отсылаю форму назад записываю время и t ставлю равным 20.и опять скрипт в течении 20 секунд игнорирует пользователя(тупо отсылает форму обратно) и только когда пройдет 20 сек проверяет на правильность . Если злое тело опять ощибся я ставлю время 40 , а потом 80 и т.д.
на 10 попытку придется ждать юзверю около 6 минут тутвсякое терпение лопнет(темболие что после каждой попытки бу приежать форма и ругать его)
 

zarus

Хитрожопый макак
Прикольный вариант. А как быть, если нормальный пользователь пришел, и пытается логиниться?
1: У обоих одинаковый ip (прокси рулез)
2: Оба "правильные" пользователи (аккаунт-шэйринг), просто один не помнит точно, и начинает "подбирать". Учитывая среднестатистическую длину пароля, перебор будет коротким.
з.ы. "на 10 попытку" - круто, а через 200 переборов аккаунт можно удалять :) А не проще ли отсылать после Н-й попытки на форму со сменой пароля и посылать подальше при последующих попытках авторизации, пока не сменит пароль...
 

Линка

Новичок
zarus
согласна, но у этих пользователей будет разный индетефикатор сессии
 

betik

Новичок
Я чаще всего сам даю пароль юзерам из 8-ми неподбираемых символов.
 

zarus

Хитрожопый макак
Автор оригинала: Линка
zarus
согласна, но у этих пользователей будет разный индетефикатор сессии
А как связать SID и ip? Куки можно почистить, и при кажом последующем обращении будет "новый" юзер... Да и ip не у всех статический...
 

Линка

Новичок
zarus
Куки можно почистить, и при кажом последующем обращении будет "новый" юзер
Поставить задержку у же на первое неправильное обращение пусть чистит куки и опять вводит .Для того чтобы сменился ip телу надо отконектится от провайдера опять время
 

zarus

Хитрожопый макак
Автор оригинала: Линка
zarus

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

SiMM

Новичок
> но у этих пользователей будет разный индетефикатор сессии
Если уж скрипт занимается подбором пароля - ничто не помешает ему с таким же успехом и SID менять при каждой попытке.
 

Astral Man

We Will Rock You
Нужно при проверки пароля делать задержку на 1-2 секунды...
в минуту смогут перебрать только 30-60 паролей... т.е. если пароль не меньше 6 символов то подобрать его не реально...
 

white phoenix

Новичок
Линка
Imho такой подход имеет кучу недостатков.
> Для того чтобы сменился ip телу надо отконектится от
> провайдера опять время
"Оставайтесь! Будете Гениальным Механиком Планеты!" :D
Royal Flash
А я сделал очень простую защиту, после 10-ой неудачной попытки ввести пароль к существующему аккаунту, просит ввести цифры с картинки, через час снова можно без цифр входить (IP и т.п. не играют роли), а также если такая защита включается более 3 раза в сутки на одном аккаунте, система расчитывает сколько уйдет времени на подбор пароля пользователя (вообще если бы точным это происходит сразу после создания аккаунта/изменения пароля, а в базе хранится хеш и данные о подборе). Далее если система понимает что пароль всё равно в ближаешее время не подберут, она не ужесточает меры, а если пароль простой, то включает проверку картинкой надолго.
Ban'ить по IP это бред, т.к. в наше время толстой пачкой быстрых прокси никогда не увидишь, sid и cookie даже не обсуждается.

-~{}~ 23.12.05 12:57:

Astral Man
Хорошая идея.
 

Dreammaker

***=Ф=***
Ещё рекомендация перед проверкой пароля-логина поставить банальное sleep(1) это может достаточно хорошо подпортить жизнь скрипту-переборщику...

upd: не успел :))
 

kruglov

Новичок
Блокировать аккаунт нельзя, а то злодей сможет заблокировать пользователю работу.

sleep(1) ставить - злодей параллелиться начнет, хотя держать сотню открытых соединений ему накладно будет (нам, правда, тоже).

По хорошим ip можно вести статистику, после неправильной попытки с неизвестного IP банить более жестоко, после хорошей - записывать в white-list и банить не жестоко.
 

zarus

Хитрожопый макак
А в результате будет страдать конечный юзверь... А где же user-friendly концепция?
 

betik

Новичок
В принципе можно поставить блокировочку перед sleep(1) - в базу поставить флажок, что мол уже ждём авторизации... И после проверки снимать флажок. Если есть боязнь того что что-то сглючит и флажок останется - по крону снимать флажок всем.
 

Vladson

Сильнобухер
Такое ощущение что моя система самая user-friendly а так-же самая действенная
 

Dreammaker

***=Ф=***
Ну а приз самой жёсткой и не юзер-френдли получает Мр.kruglov. За идею банить юзеров в любом случае хоть правильный пароль, хоть не правильный... :)
 

chisto_tolyan

Враг народа
Dreammaker
интересно, где тут kruglov предлагал банить юзеров в любом случае?)
 
Сверху