|
К сожалению, боты научились читать визуальный код подтверждения регистрации. Противостояние продолжается...
Действия, описанные в части первой и, призванные оградить Вас от ботов-спамеров, как оказалось, увы, не достаточны. Но проделать их всё же стоит. Да, боты научились подтверждать регистрацию по мылу. Да, боты читают визуальное подтверждение быстрее нас. Да, им всё это по барабану. Но, благо ещё не Скайнет рулит на планете, а значит - шансы есть. Об этих шансах и поговорим.Каюсь: перед написанием этого опуса, надо было бы прочитать подробней и внимательней о том, как именно новое поколение ботов ботится. То есть регится. Не прочитал. Попытаюсь угадать. Полагаю дело обстоит так: Поскольку регистрация на всех форума абсолютно одинакова, то и бот себя ведёт одинаково на всех форумах. Что я имею ввиду? У нас есть набор стандартных данных, которые надо указать для регистрации. А именно: имя, мэйл, пароль, визуальный код. Если не соврал, это четыре основных параметра, которые есть везде. Бот читает вопрос и подставляет ответ. Это, естественно, весьма условное описание ситуации. В любом случае, все вы видели результат: бот не пишет в графе город своё имя, а в визуальный код - день рождения Ганди. Он попадает нужными данными в нужные колонки. Значит, либо он читает поля, либо ответы у него указаны в нужном порядке, который не изменен от форума к форуму. Второе мне представляется сомнительным. Я думаю, что он всё же читает и подставляет. Что же можно с этим сделать? А можно взять и либо убрать знакомые ему поля, либо добавить новые и сделать их обязательными к заполнению. На моё скромное заблуждение, встретив, не виданное до селе поле, глупый бот растеряется и отвалится. А умный отвалится, но хозяину отстучит, почему он отвалился. Как вариант, одно время предлагалось добавить в форму регистрации дополнительное подтверждение введённого мэйла. То есть мэйл вводился два раза, как пароль. Я как-то поленился и одному клиенту поставил только этот вариант. В тот же вечер на форуме объявились два-три бота от известной конторы (не будем показывать пальцем, хотя это был rupoisk), и давай ставить автографы. Не знаю, может быть они зарегились чуть раньше, чем я успел активизировать новую регистрацию, а может быть всё же зачитали это новое поле. В любом случае, я решил не рисковать и сделать так, как давно уже говорилось... Дело в том, что любое массовое решение по защите форумов, неизменно будет взломано-обойдено. Поэтому надо искать индивидуальный путь, что бы взлом Вашей защиты оказался дороже конечного результата. В конце-концов, кому захочется учить свою мартышку регится у Вас, если такой трюк она сможет применить на одном форуме. Это не выгодно, а оттого не интересно. Но как добиться индивидуальности? Переписать движок форума? Но я не знаю php... К счастью, есть люди, которые знают. И не стесняются делится своими разработками. Можно взять готовое решение и слегка его подкорректировать под себя. Сейчас покажу. Существует мод, который так и называется Add new field to profile. Что в переводе с нерусского означает: Добавление нового поля в профиль. Но обо всём по порядку... Для начала, у меня есть предложение. Почему бы нам не урезать форму регистрации исключительно до обязательных полей? Ну что бы при регистрации не пришлось вписывать асю, вэб, город и т.д. Это всё успешно можно вписать и после регистрации. А так, уже кое-какие боты отвалятся. Те самые, которые регились пачками, но, в силу особой застенчивости, ничего не писали, а только оставляли ссылки в профиле. Да, было время. Сейчас таких, поди, и не сыщешь уже. Будем заморачиваться? Будем. А если не будем, то листаем дальше. Мод называется: Custom registration form 1.0.3. Автор: Niels. Кстати, сайт: http://mods.db9.dk Ставится этот мод легко. Даже легче, чем сказано в инструкции. Суть заключается в том, что мы копируем новый файлы к себе в шкуру, и в файле includes/usercp_register.php сообщаем, что именно новый файл, служит шаблоном для регистрации. Единственно, на что хотел сразу бы обратить внимание. Скопированный файл по сути шаблон формы регистрации. Вы можете добавлять в него поля, которые хотите. И которые надо добавлять. Например, в настоящей версии отсутствует визуальное подтверждение. Чем это грозит? Дело в том, что в некоторых других файлах, при условии, что в админке у Вас визуал включен, прописано, что это поле (визуал) обязательно к заполнению, то есть фиг Вам, а не регистрация. Что бы этого избежать, в этот наш новый шаблон надо добавить тот самый визуал, который мы берём в стареньком файле: profile_add_body.tpl. На всякий случай привожу этот код: | /templates/subSilver/profile_add_body.tpl | <!-- Visual Confirmation --> <!-- BEGIN switch_confirm --> <tr> <td class="row1" colspan="2" align="center"><span class="gensmall">{L_CONFIRM_CODE_IMPAIRED}</span><br /><br />{CONFIRM_IMG}<br /><br /></td> </tr> <tr> <td class="row1"><span class="gen">{L_CONFIRM_CODE}: * </span><br /><span class="gensmall">{L_CONFIRM_CODE_EXPLAIN}</span></td> <td class="row2"><input type="text" class="post" style="width: 200px" name="confirm_code" size="6" maxlength="6" value="" /></td> </tr> <!-- END switch_confirm --> |
Вот его-то и надо вставить в новый шаблон. Для тех, кто чуть-чуть знаком с html, труда, эта процедура не составит и, сложностей не вызовет. Но на всякий случай, я выкладываю уже правленный файл шаблона. //пометка для себя: не забыть поправить... Далее приступаем к самому интересному.Мод: Add new field to profile. Автор: Acid. Сайт: а сайта-то в инструкции я и не нашёл. Но этот человек довольно широко известен, в узких кругах... А брал я его отсюда: http://phpbbhacks.com. Как говорилось выше, этот мод добавляет новое поле в профиль пользователя. Предлагаемая мной хитрость, заключается в том, чтобы перед его установкой в файле-инструкции заменить все встречающиеся варианты info, на нужное Вам слово. Поясняю: в этом моде добавляется новое поле с названием info. Так вот представьте, что стотыщ ленивых человек, модифицировали свою регистрацию по дефолтовому значению инфо. Это уже повод добавить это поле боту в память. Но если каждый бы придумал своё имя... В общем, тут пошёл бы совсем другой разговор. Процедура индивидуализации до дури проста. Открываем файл инструкции в текстовом редакторе, в режим редактирования (в виндоус, например, текстовый файл можно просто смотреть, а можно не просто смотреть. Так вот нас сейчас интересует второй вариант.) Открыли? Теперь просто просим найти и заменить. Искать и менять будем три раза: 1. info 2. Info 3. INFO Естественно, с учётом регистра. Кстати, именно об этом автор сообщает в описании мода. Но, так уж исторически сложилось, что пользователи phpbb делятся на два вида: тех, кто в школе, как и я, учили немецкий и, тех, кто в школе, как и я, учили французский. У нас в школе, правда, был ещё финский, но это скорее исключение из правила. На что менять? Как на что? На что хотите. Хотите, что бы пользователь сообщал любимое блюдо - меняйте на: 1. food 2. Food 3. FOOD Тогда не забудьте, при добавлении в языковой файл указать, что: | language/lang_russian/lang_main.php | $lang['Food'] = 'Ваше любимое блюдо'; |
После того, как мод установлен, Вы решаете проверить, как же он работает. Жмёте регистрацию и... Облом. Нового поля-то и нет. А откуда же ему взяться? Вы ведь по инструкции какой файл правили? Этот templates/xxx/profile_add_body.tpl. А за вид регистрации у нас теперь кто отвечает? Правильно templates/xxx/profile_register_body.tpl. Это, конечно, в том случае, если Вы всё же решили сделать Custom registration form. Собственно, ничего страшного. Надо просто добавить в него новое поле и всё. Ладно. Показываю: | Адд нью филд ин profile_register_body.tpl | #------- открываем profile_register_body.tpl ------- #------- находим ------- <!-- Visual Confirmation --> <!-- BEGIN switch_confirm --> #------- бефор адд (добавляем перед) ------- <tr> <td class="row1"><span class="gen">{L_Ваше_название_поля}:</span></td> <td class="row2"> <input type="text" class="post"style="width: 200px" name="color" size="35" maxlength="150" value="{Ваше_название_поля}" /> </td> </tr> #------- сохраняем ------- |
Если Вы не можете найти в этом файле визуал конфирм, значит я всё же забыл его туда добавить... Шаманская тропа.Теперь бы надо сделать так, что бы новое поле стало обязательным. Тут нам помогут американо-чукотские дядьки с бубном. То есть шаманы. Поскольку я, так же как и Вы в php ни бум-бум... Другими словами: | New field is mandatory (новое поле - обязательно к заполнению) | #------- открываем includes/usercp_register.php #------- находим ------- $username_sql = "username = '" . str_replace("\'", "''", $username) . "', "; } } } #------- не промахнитесь с тремя фигурными скобками. ------- #------- следом ставим ------- if( $mode == 'editprofile' || $mode == 'register' ) {
if( empty($info) ) { $error = TRUE; $error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Fields_empty']; } } #------- обратите внимание на два момента. первый: # если Вы не хотите, что бы поле проверялось при изменении профиля, уберите # это: # $mode == 'editprofile' || # второй момент: # здесь if( empty($info) ) не забудьте вместо info поставить своё слово. #------- сохраняем ------- #------- для пущей убедительности, можно сделать ещё это: #------- открыть profile_register_body.tpl #------- найти ------- {L_Ваше_имя_поля}: #------- после добавить * ------- #------- что бы получить ------- {L_Ваше_имя_поля}: *
|
Кстати, отсюда лучше не копировать. У меня не хватает тех отступов, наличие которых, очень понадобится при поиске нужного фрагмента. Но если всё же всё сделано правильно, то и регистрация пройдёт успешно и боты отвалятся. На всякий случай, можно потестировать регистрацию в локале. А вдруг, поле добавилось, но не стало обязательным? Процедуру добавления можно проделать сколько угодно раз. Не забывайте менять название и вносить соответствующие изменения в базу данных. Необходимые файлы: custom_reg_1.0.3em //новый шаблон регистрации, с внесённым визуал конфирмейшен. Add new field to profile //добавление нового поля. New field is mandatory //делание этого поля обязательным. Удачи. ПиЭс С возникшими вопросами, милости прошу на форум. ПиПиЭс Если по какой-то причине Вы не можете или не хотите ставить это дело сами - обращайтесь. За умеренную плату... всё будет в лучшем виде. |