Притормаживаем перебор пароля и фиксируем попытки
Фиксировать будем в файлы темповой директории. На каждый логин — свой файл. Частота попыток определяется через разницу текущего времени и времени последней правки файла. Правим файл ActionLogin.class.php, функция EventAjaxLogin:
* Если наш юзер существует, то проверяем разницу между попытками авторизации
* Если авторизация не прошла, то фиксируем время, ip, ошибочный пароль (лишнее убрать):
Замечания и предложения приветствуются!
* Если наш юзер существует, то проверяем разницу между попытками авторизации
$oFName=Config::Get('sys.cache.dir').'login_log-'.$oUser->getLogin().'.txt'; if(file_exists($oFName) && 3>=(time()-filemtime($oFName))) { $this->Message_AddErrorSingle("Sorry, please wait 3 seconds and try again!"); return; }
* Если авторизация не прошла, то фиксируем время, ip, ошибочный пароль (лишнее убрать):
$oFile=fopen($oFName,'a'); if($oFile) { fwrite($oFile, date ( DATE_ISO8601, time() ).'['.func_getIp().']='.getRequest('password')."\n" ); fclose($oFile); }
Замечания и предложения приветствуются!
5 комментариев
?
создавайте во второй раз уже файл с айпи в имени.
если целиком, то так
p.s. я вот ща посмотрел ещё раз, и условие «Проверяем есть ли такой юзер по логину» — похоже не совсем правильное, getuserbylogin — дописывали после :))