Хак Вопрос-ответ с картинкой, правильная борьба со спамом в DLE

В свете выхода XRumer 7.7.35 многие сайты на DLE заполнились спамом. Тексткапча, т.е. система вопрос-ответ уже не так эффективна, по причине того, что Botmaster(разработчик Xrumer) провел масштабную акцию по обучению хрумера новым тексткапчам. Огромное количество вопросов-ответов пробиваются хрумером без труда.


Botmaster:
Как многие уже знают, в сентябре-октябре у нас прошёл масштабный конкурс по коллективному обучению XRumer-а новым тексткапчам. И коллективный разум дал свои плоды: результаты превзошли все наши ожидания, программа стала знать на 70.000 текстовых защит больше. А ведь именно текстовыми капчами стали спасаться большинство админов форумов

Хрумер распознает кучу разных видов капч, и далее усложнять капчи = терять посетителей.

Решение как всегда оказалось на поверхности, небольшой хак, и на сайтах которые мониторятся с 13 мая 2012 года, и на которых отключена стандартная капча на данный момент не зарегистрировалось ни одного бота.

Что на данный момент умеет распознавать хрумер? Текст на картинке, с разными зашумлениями и искажениями.

Изображения на картинке он пока распознавать не умеет

Внимание вопрос:

Что нарисованно на этой картинке?

Хак Вопрос-ответ с картинкой, правильная борьба со спамом в DLE

Любой человек без труда ответит что это ... Телефон

Что ответит на этот вопрос хрумер, или вообще любой бот? Да ничего, ведь он научен распознавать только текст, а текста на картинке нет.

Стало быть задача, давать посетителям при регистрации любую простую картинку, чтобы они отвечали что на ней нарисованно.

Вопрос всегда будет один и тот же -

Что нарисованно на картинке?

Ответы и картинки разные.

В контексте DLE, для решения этой задачи очень подходит стандартная система вопрос-ответ, единственная проблема в том, что когда печатаешь вопрос, двиг вырезает все теги, от этого и будем его отучать. Картинки, надо загружать на сервер самому, через FTP, дабы не громоздить лишний ненужный код.

1. Откроем файл

engine/ajax/addcomments.php


$qs['question'] = htmlspecialchars( stripslashes( $qs['question'] ), ENT_QUOTES );

заменяем на

 

$qs['question'] = stripslashes( $qs['question'] );

2. Откроем файл

engine/modules/register.php

  $tpl->set( '{question}', htmlspecialchars( stripslashes( $question['question'] ), ENT_QUOTES ) );

заменяем на

$tpl->set( '{question}',  stripslashes( $question['question'] ) ); 

3. Открываем файл
engine/inc/question.php
 $question = $db->safesql( strip_tags($_POST['question']) );
2 РАЗА! заменяеем на


 $question = $db->safesql( strip_tags($_POST['question'], '<img>') );

 

4. В этом же файле строку -


$row['question'] = htmlspecialchars( stripslashes($row['question']), ENT_QUOTES );

 

заменить на
$row['question'] =  stripslashes($row['question']);
5. Ниже через сточку следующий фрагмент кода -



 

        $entries .= "<tr>
        <td align=\"center\" style=\"width:100px;\"><a uid=\"{$row['id']}\" class=\"editlink\" href=\"?mod=question\"><img style=\"vertical-align: middle;border:none;\" alt=\"{$lang['word_ledit']}\" title=\"{$lang['word_ledit']}\" src=\"engine/skins/images/notepad.png\" /></a>&nbsp;&nbsp;<a uid=\"{$row['id']}\" class=\"dellink\" href=\"?mod=question\"><img style=\"vertical-align: middle;border:none;\" alt=\"{$lang['word_ldel']}\" title=\"{$lang['word_ldel']}\" src=\"engine/skins/images/delete.png\" /></a></td>
        <td style=\"padding:4px;\" nowrap><div id=\"question_{$row['id']}\">{$row['question']}</div><div id=\"answer_{$row['id']}\" style=\"display:none\">{$row['answer']}</div></td>
        </tr>
        <tr><td background=\"engine/skins/images/mline.gif\" height=1 colspan=4></td></tr>";


 

заменить на


 


 
        $entries .= "<tr>
        <td align=\"center\" style=\"width:40px;\"><a uid=\"{$row['id']}\" class=\"dellink\" href=\"?mod=question\"><img style=\"vertical-align: middle;border:none;\" alt=\"{$lang['word_ldel']}\" title=\"{$lang['word_ldel']}\" src=\"engine/skins/images/delete.png\" /></a></td>
       <style>div.questionmod img {width: 40px;}</style><td style=\"padding:4px;\" nowrap><div class=\"questionmod\" id=\"question_{$row['id']}\"><b>Вопрос:</b> {$row['question']}</div></td><td align=left valign=bottom><div id=\"answer_{$row['id']}\" ><b>Ответ: </b>{$row['answer']}</div></td>
</tr>
        <tr><td background=\"engine/skins/images/mline.gif\" height=1 colspan=4></td></tr>";


 

 

 

Готово.
Пункты 5 и 4 отвечают за более компактный и симпатичный вывод введенных вопросов в админке, их делать по желанию, будет работать и без них.
Посмотреть вопрос и ответ в действии можно у нас на сайте Попробуйте пройти регистрацию
Добавление вопроса (намжмите на картинку для увеличения):

 

Хак Вопрос-ответ с картинкой, правильная борьба со спамом в DLE

Вопросы и ответы в админке (намжмите на картинку для увеличения):

 

Хак Вопрос-ответ с картинкой, правильная борьба со спамом в DLE

Как примерно будет выглядеть регистрация для  посетителя.

 

Хак Вопрос-ответ с картинкой, правильная борьба со спамом в DLE

Желаю всем успехов в борьбе с ботами.
В скором времени и этот способ наверное  победят, ведь спамеры не сидят на месте.
Когда хрумер научиться распознавать изображения, будем спрашивать сколько людей нарисованно на этой картинке? winked
Хак Вопрос-ответ с картинкой, правильная борьба со спамом в DLE
Ну а пока пользуемся более простым способом.

Оставить комментарий

  • Смайлы и люди
    Животные и природа
    Еда и напитки
    Активность
    Путешествия и места
    Предметы
    Символы
    Флаги