PHP форум

PHP форум

Форум техподдержки WR-Скриптов на php. Здесь обсуждаются: основы программирования на PHP, различные подходы к реализации скриптов. А также WR-скрипты: Доски объявлений, скрипты форумов, Гостевые книги, Каталог ссылок, Галерея, Фотоальбом, Счётчики, Рассылки, Чат, Анекдот и т.д. Принимаются пожелания для новых версий. Пишите какой скрипт планируете увидеть, постараемся реализовать. Давайте сделаем бесплатные php скрипты лучше и доступны всем!!!
Главная сайтаГлавная сайта   ПоискПоиск   Участники  
Сегодня: 22.07.2018 - 05:19:43
Страницы:  1  
PHP форум » Защита от взлома » Защита от brute force атак
АвторСообщение

AntiGun

Дружище





Статистика:
Тем создано: 21
Сообщений: 349
Репутация: 484 ±
Нарушения: 0
Здравствуйте!
Теоретически, злоумышленник может подобрать пароль юзера (или, что хуже, админа) простым повторением одного запроса на авторизацию, меняя в нём только пароль. Перебрать все возможные пароли - задача не из лёгких, но короткий пароль вполне может стать жертвой брутфорсера. А при достаточном терпении - и длинный.
А это значит, что нужна защита от такого рода атак.
--------------------------------------------------
Будьте особенно осторожны на перекрёстках судьбы!
Сообщение # 1 15.11.08 - 18:13:28

AntiGun

Дружище





Статистика:
Тем создано: 21
Сообщений: 349
Репутация: 484 ±
Нарушения: 0
Подумав над сей проблемой, я сделал один очередной мод.
Привожу фрагмент кода, который и осуществляет анти-брутфорс:


    Код:
    //антибрутфорс
    $loginname=$name;
    $loginname=str_replace("\r","",$loginname);
    $login name=str_replace("\n","",$loginname);
    $loginname=str_replace("\t","",$loginname);
    $loginname=strtolower($log inname);
    $filename = "$datadir/logins.dat";
    $failik = fopen($filename,"a+") or exit("chlen");
    flock ($failik,LOCK_EX);
    $lstext = fread($failik, filesize ($filename));
    $content = explode("\n",$lstext);
    $sizearray = sizeof($content);
    $numofsame = 0;
    $ip = getenv("REMOTE_ADDR");
    $now = time();
    for ($i=0; $i<$sizearray; ++$i)
    {
    if ($content[$i] !== "")
    {
    $thedt = explode("&#124;", $content[$i]);
    if (($thedt[0] == $ip) &#124;&#124; ($thedt[1] == $loginname))
    {
    if ($now < $thedt[2]+600) { $numofsame++; }
    }
    }
    }
    if ($numofsame > 2)// если 3 или больше таких попыток
    {
    flock ($failik,LOCK_UN);
    fclose($failik);
    exit("Слишком много попыток войти. Попробуйте через 10 минут.");
    }
    else
    {
    ftruncate($failik,0);
    for ($i=0; $i<$sizearray; ++$i)
    {
    if ($content[$i] !== "")
    {
    $thedt = explode("&#124;", $content[$i]);
    if ($now < $thedt[2]+600)
    {
    $zapis = $content[$i];
    fputs($failik, "$zapis\n");
    }
    }//end if
    }//end for
    fputs($failik, "$ip&#124;$loginname&#124;$now&#124;\n");
    flock ($failik,LOCK_UN);
    fclose($failik);
    }

    //конец антибрутфорса

Вот такими (или похожими) кусками кода я наполнил файлы. Кто хочет видеть их, может взять (ссылу давал в теме про мой мод SM v.1.0), теперь версия мода 1.2.5.
В качестве $name должно быть имя пользователя (модера, админа) или имя отправителя письма, извлечённое из куков.
logins.dat в случае модера-админа заменяем на loginsadmin.dat или loginsmail.dat для личных сообщений.
Вероятно, для полной защиты от брутфорсеров нужно ещё как-то проверять отправку сообщений или что-то ещё, но до этого я пока не додумался
--------------------------------------------------
Будьте особенно осторожны на перекрёстках судьбы!
Сообщение # 2 15.11.08 - 18:28:41

AntiGun

Дружище





Статистика:
Тем создано: 21
Сообщений: 349
Репутация: 484 ±
Нарушения: 0
Заметил глюк:
во фрагменте
$loginname=strtolower($log inname);
на самом деле должно быть не ($log inname), а ($loginname)
Этот прикол возник из-за разрывания слишком длинных слов. В исходном же коде слово, конечно, не разорвано
--------------------------------------------------
Будьте особенно осторожны на перекрёстках судьбы!
Сообщение # 3 17.11.08 - 15:01:16

Homeless

новичок




Статистика:
Тем создано: 1
Сообщений: 14
Репутация: 8 ±
Нарушения: 0
Кто подскажет, нашел в комментариях фотогалереи вот этот кусок
YSun0Y bnnLst19hdY6llAd3fg6
это что просто нечего делать или что похуже?
Сообщение # 4 26.11.08 - 17:26:01

AntiGun

Дружище





Статистика:
Тем создано: 21
Сообщений: 349
Репутация: 484 ±
Нарушения: 0
попробуй base64_decode
но если в комментах, то вряд ли стоит этого бояться
--------------------------------------------------
Будьте особенно осторожны на перекрёстках судьбы!
Сообщение # 5 02.12.08 - 21:36:48
PHP форум » Защита от взлома » Защита от brute force атак
Как запретить просмотр сайта с определенного IP? :Предыдущая темаСледующая тема: Защита от SQL-injection
Страницы:  1  

Сообщение
Имя E-mail
Сообщение

Нажмите на точку возле имени, чтобы вставить обращение к участнику в сообщение

Смайлы:
Ещё смайлы

* При вставке видео с Ютубе нужно указывать только 'хвостик', например: BoUUbs3CvHs
           
Защитный код: (введите цифры, которые на синем фоне)
Ответ на вопрос: (Какой сейчас год?)
   
WR-Счётчик
Powered by WR-Forum Professional © 2.1.1