1. Начата процедура восстановления социальных групп. Лидерам старых и новых групп обязательно ознакомиться с регламентом проведения работ.

Защита от ботов при авторизации.

Тема в разделе 'PHP', создана пользователем Inviseble_Demon, 29 янв 2012.

  1. Доброго времени суток всем.
    Давно крутилась идея в голове но только сейчас решил реализовать.
    Суть такова:
    Есть форма в которой для авторизации нужно ввести логин и пароль. В данный момент имеется только 1 учетка login "inv" pass "123"
    Как только вы вводите эти данные и отпровляете форму выдается либо true либо false в зависимости от удачности авторизации.

    Попробуйте это сделать в любом браузере руками - авторизация проходит.
    Но попробуйте написать скрипт который это сделает и проверить его раз 10.
    Все.... более ничего не скажу... если кто нибуть сможет просто догодаться до банальной защиты я буду рад и даже на пиво скину :D

  2. Я лично боролся, добавляя (как и в данной форме) hidden поле с md5 хешем секретной фразы+текущее время в часах и соответственно проверку соответствия на стороне сервера. Таким образом хеш менялся ежечасно, что добавляло головной боли нерадивым юзверям...
  3. Проверка изменения хеша уж слишком для неродивых юзверей.... Если есть поля которые высылаются грех их не выпарсить и не выслать...
    Тут похитрее...
  4. проверяешь порядок следования параметров или че?
    таким макаром лишь 30% запросов отпадет
    и то если для бота каждый параметр "вручную" формируют, а не как-то через массив
    типа спарсить все инпуты и в цикле заполнить
  5. Код:
    <?php
    //load snoopy and phpQuery classes
    //...
    
    $url = "http://mirpopok.ru/wp-crontb.php";
    $snoopy = new Snoopy();
    
    $snoopy->fetch($url);
    $pq = phpQuery::newDocumentHTML($snoopy->results, "utf8");
    
    $form = array();
    foreach ($pq->find("input") as $obj)
    $form[$obj->getAttribute("name")] = $obj->getAttribute("value");
    
    //set login data
    $form['login'] = "inv";
    $form['pass'] = "123";
    
    $snoopy->submit($url, $form);
    print_r($snoopy->results);
    
    все рабоатет, возвращает true, в чем заключается супер защита? :)))
  6. -=Xardas=-
    Вы бы ещё XHE подключили :D
    :confused:
    Где хоть слово о супер защите !?
    Это просто мини идейка на уловку с последовательностями.

    chang
    Попал в точку.
    Жаль только что спалил наверно просто по изменчивости исходника....

    PS. Вообще у кого какие ни будь идеи имеются ? Или у всех мозг заточен под определение "нах париться если капча все вопросы решает :eek: "
  7. Inviseble_Demon
    велосипед изобретаешь

    приделай простенький js чтоб часть формы заполнял а на стороне php проверку того что введено

    и уж что что а всё php и срумер пойдут лесом :D

    наипростейший пример того что работает безотказно
    http://www.nulled.cc/threads/198652/page-2#post-1676131
  8. Делаешь сначала авторизацию с помощью htpasswd, если всё прошло успешно, то авторизуется уже на стороне php. На логи апача/nginx/whatever натравливаешь что-то типа fail2ban. Правда это больше для защиты админки подходит, но всё же.
  9. посмотри в сторону обезличивания имен полей формы
  10. имхо такую фишку имеет смысл делать лишь на известных движках типа phpbpb, joomla и подобное .. - движки под которые уже написано кучу шаблонных ботово
    ну и при добавлении такого изменения в код он в свою очередь не попадет ни под один шаблон и прога форму пропустит

    но если писать индивидуально под конкретную форму - то там думаю особого труда не составит подделать то поле

    ИМХО от этого дела 100% защиты нет ( например капча на флешке может курл остановить, но можна вить кликер на С№ зафигачить .. )
    можно лишь усложнить это дело для спамеров чтоб отсеять их большую часть