[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: брутфорс авторизации
tazododu
хочу сделать вывод капчи после неправильного ввода лог-паса.
погуглил, но так и не нашел единного мнения как лучше реализовывать проверку второй и более авторизаци, записывать юзера в сессию, хранить в куки, или создать еще один столбец в базе??

посоветуйте какой способ более надежен. ссылки на инфу приветствуются)

спасибо:)



Спустя 1 час, 28 минут, 23 секунды (12.07.2010 - 17:51) Rand написал(а):
Надежнее через базу. Делать проверку либо для каждого пользователя, либо для конкретного ip. В первом случае: в таблице users создаем поле captcha, в котором будем хранить 1 или 0 (показывать капчу или нет). Во втором: создаем новую таблицу, в которой будет хранится список ip; если ip есть в таблице, показываем ему капчу. После успешной авторизации удаляем ip.

Спустя 4 минуты, 23 секунды (12.07.2010 - 17:55) FatCat написал(а):
Не люблю каптчу.

Проще писать в базу - прямо в таблицу пользователей - число попыток авторизаций; обнулять при успешной авторизации, а на саму авторизацию делать задержку например по формуле 10*$count_bruts/(time()-$last_visit).
Таким образом нормальным пользователям будет задержка почти незаметной, а при брутфорсе время задержки будет стремиться к 10 секундам.

Спустя 14 часов, 58 минут, 33 секунды (13.07.2010 - 08:54) tazododu написал(а):
FatCat, то есть вы предлагаете ставить в скрипте sleep()
добавить 2 столбца, и один из них сразу по умолчанию заполнить last_visit = time()?

проверил так:

$last_visit = 12790024007;
$time = time();
for($i=1; $i<1000; $i++) {
$delay = 10 * $i / (time() - $last_visit);
}



Спустя 2 часа, 5 минут, 29 секунд (13.07.2010 - 10:59) tazododu написал(а):
сделал так:


if($user['count_bruts'] <= 5)
$delay = 0;
elseif($user['count_bruts'] > 5 && $user['count_bruts'] <= 20)
$delay = 1;
elseif($user['count_bruts'] > 20 && $user['count_bruts'] < 100)
$delay = 20;
elseif($user['count_bruts'] >= 100)
$delay = 600;
sleep($delay);


тоесть чем больше неправильных вводов тем дольше джешь.

что скажете о методе?

Спустя 1 час, 7 минут, 12 секунд (13.07.2010 - 12:06) Nikitian написал(а):

$delay=($user['count_bruts']>5?(($user['count_bruts']-5)*20):0);

Примерно так и не париться вообще smile.gif

Спустя 3 минуты, 27 секунд (13.07.2010 - 12:10) twin написал(а):
Ни один человек в здравом уме и рассудке не станет брутить форму входа, если там есть задержка хотя бы не 2 секунды. Простой юзер этого даже и не заметит, а вот для бота такая ноша неподсильна.

Другой вопрос, что нужно не дать ему делать несколько параллельных запросов. А для этого его нужно идентифицировать. Что бывает достаточно сложно.

Так что пока единственным более менее надежным способом такой защиты является капча. Ну или другие фокусы с формой, которые используются на этом форуме допустим. smile.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.