Что такое неверная капча при регистрации чудо. Как защитить комментарии от спама без капчи. Ввод капчей как дополнительный заработок

Для того чтобы в системе интернет было меньше мошенников и различного рода недобросовестных пользователей, существуют разные системы защиты, одной из которых является запрос - расшифровать искаженный код и написать его в пустой строке, то есть, вам необходимо ввести, так называемую, капчу.

    • Как писать обычную и сложную капчу
    • Автоматические программы для обхода капч

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

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

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

Вам же не сложно будет уделить раз в день, к примеру, несколько секунд, для распознавания такого кода?

Такие программы пользуются популярностью среди тех, кто, к примеру, зарабатывает на установлении большого количества лайков в социальных сетях или же, к примеру, в процессе набора большого количества людей в группу. Получается, что написать код вас система просит в том случае, если сомневается в том, что данный процесс производится пользователем, а не автоматической программой. Когда вы вводите капчу, вы подтверждаете, что вы простой пользователь, а не робот.

Как писать обычную и сложную капчу

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

Пользователь должен знать, что существуют капчи разных видов:

  • буквенные;
  • цифровые;
  • буквы+цифры;
  • русские капчи;
  • английские капчи;
  • капчи с картинками (где необходимо правильно расположить картинку, поворачивая ее в разные стороны;
  • капчи в виде примеров (вычитании, умножение и т.д.). Здесь необходимо решить какое-то арифметическое уравнение, оно очень простое, по типу 2+2 и т.д;
  • сложные капчи с заданиями.

Рассмотрим три последних варианта, они являются сложнее, чем другие вышеперечисленные капчи. Написать код в случае с капчей-картинкой не получится, потому, как здесь не нужно капчу писать, ее нужно поворачивать, чтобы картинка выглядела логично, то есть, была правильно поставленная. Если вам высветилась капча с примером, то ее просто нужно решить, то есть, в пустую строку, вы должны вбить правильный ответ, а не переписывать сам пример в графу.

Что касается сложной капчи, то здесь вам необходимо будет выполнить задание. Обычно написать в строку, необходимо какой-то ответ. Вам может быть дана ссылка, по которой вы должны будете перейти и найти, к примеру, телефон какой-то компании. Находите и вписываете его в строку, капчу. Это займет не больше минуты, к тому же, такие капчи попадаются очень редко, чаще всего они есть на серьезных коммерческих сайтах, куда просто так не зайдешь.

Смотрите видео - Как можно писать сложную японскую капчу

Автоматические программы для обхода капч

Сегодня практически на каждом сайте есть рассматриваемая система защиты. Забавно то, что создатели сайтов считают, что сегодня можно иметь такую защиту, и устанавливают ее именно по этой причине, но не по причине наличия желания обезопасить созданный ими ресурс. Обычный пользователь все чаще начинает сталкиваться с запросами в виде капч, и в последствие, это становится раздражительным действием. Именно поэтому многие пользователи ищут способы не попадать на капчи, чтобы автоматическая программа распознавала их.

Существуют программы, которые могут избавить вас от этих надоедливых кодов. Самыми востребованными считаются бесплатные программы, скачать и установить которые может каждый, но самыми эффективными являются новейшие программы распознавания капч, за установку которых пользователю придется заплатить.

Капча используется, чтобы оградить сайт от ботов, спама, флуда и прочей нечисти. Надежность капчи с технологической стороны может вызывать сомнения, но программка безусловно полезная с человеческой и философской точки зрения.

Что такое капча? Это транскрипция аббревиатуры CAPTCHA — хитроумной тест-программки, изобретенной учеными университета Карнеги в США для различия между роботом и человеком.

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

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

Что такое капча и нужна ли она

Об этом задумывается, наверное, каждый блоггер. Потому что кажется, будто именно количество комментариев определяет ценность сайта. Чем больше комментариев, тем полезнее статья.. Чтобы излечиться от этой идеи, загляните на форумы и сайты с таким количеством комментариев по каждому бзику, что начинает кружиться голова от обилия второсортной информации. Мы боимся, что наши посетители уйдут по английски — молча.

Лекарство от этого страха тоже есть, если задуматься: многие из гостей сами заинтересованы оставить свой след в виде граватара и ссылочки на свой ресурс.

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

Не у всех стоит капча, но у всех без исключения включено модерирование. Видимо, эти люди берегут свое время, настрой и блог от ненужных энергий и вторжений.

За миг перед тем, как нажать кнопку «Установить» капчу, я заколебалась, понимая, что число комментариев на моем сайте резко упадет. Останутся только те, у кого действительно есть причина. А сайт-то еще молодой.. Страшно?

А не страшно бесконечно тратить время жизни на комментарии из трех-пяти слов, очевидная цель которых — просто оставить ссылку на свой сайт или оттроллить автора просто потому что хлам в душе скопился? А себя, своих нервов, времени, своего сайта, который лелеешь каждый день, — не жаль?

Принципы жизни, которые описывает Тим Феррис в своей книге «Как работать 4 часа в неделю», остаются просто красивыми словами только до тех пор, пока однажды сам не осознаешь ценность своей жизни. Когда это происходит, начинает одно за другим отваливаться все, что мы часто считаем нужным, необходимым, правильным и — главное — приличным в глазах других. Мы столько предаем себя в ежедневных мелочах, что уже разучились на самом деле понимать, что для нас вредно, а что полезно в каждом отдельном случае.

Чем измеряется ценность жизни?

Да очень просто. Часами, минутами, секундами. Каждая секунда наполнена тем, что мы делаем (или не делаем). И каждая мелочь — имеет значение. Есть поступки, действия и люди, которые способствуют проявлению хороших результатов: мы становимся сильнее, богаче, радостнее, свободнее. И есть в жизни каждого из нас вещи, дела, привычки, люди, которые ослабляют.

«Не надейтесь, что этот анализ обрадует Вас:

истина чаще всего бывает горькой. Задача — выяснить, где именно Вы действуете непродуктивно, отказаться от этих действий и прибавить там, где отдача выше».
Тим Феррис

Так вот, после того, как я установила капчу на своем блоге, количество комментаторов с понятными целями действительно упало примерно на 95%. Полагаю, останутся те 5% людей, которым действительно есть что сказать и кому интересно на моем блоге. Win-win (взаимовыгдное сотрудничество). Мне так по душе. Именно для самых ценных своих гостей, чтобы компенсировать некоторые неудобства, связанные с прохождением заслона капчи, тут же на блоге был установлен плагин с ТОПом комментаторов.

«Я перестал поддерживать контакт с 95% покупателей и разругался еще с 2%.

Лучшим клиентам я стал уделять вдвое больше времени.

От утомительной погони за 120 клиентами я перешел к простому получению заказов от 8 клиентов.

Мой месячный доход вырос в 2 раза, а продолжительность рабочей недели упала с 80 до 15 часов.

И самое важное — я был доволен собой, настроен оптимистично

и впервые за два года почувствовал себя свободным». Тим Феррис

Если Вы чувствуете, что Ваша админка и почта завалены комментариями, но боитесь потерять благосклонность целевой аудитории и хотите сделать приятный подарок людям, которые Вас усиливают, установите капчу в содружестве с ТОПом.

Как выбрать капчу

Подбирайте капчу под себя — они бывают разные. Перечислю основные из них:

  • ввод цифр с картинки: простой, нейтральный, сдержанный, элегантный, не требующий затрат времени и головоломки вариант;
  • распознавание текста: тяжелый случай, который не всегда срабатывает сразу — даже у человека с глазами, а не робота! Это та самая капча, с которой мы сталкиваемся при регистрации на разных сервисах. Встроенная в нее возможность распознавания текста на слух — для меня лично кажется чем-то совершенно невозможным для исполнения. Но если Вам необходимо защитить ресурс крепко, то один из самых надежных вариантов;
  • работа с картинками: требуется распознать и ответить письменно, кто на картинке или совершить некоторые действия, чтобы они перестроились нужным образом. Вариаций здесь множество, и среди них бывают очень даже интересные. Если полазить по сети, находятся очень необычные авторские варианты — для тех, кто хочет, чтобы его блог.отличался от большинства.

У меня, как видите, стоит самый простой и дружелюбный вариант картинок, которые нужно выстроить вертикально. Вообщем-то времени отнимает не больше минуты. Тем не менее, поток странных комментариев значительно уменьшился благодаря такому простому нововведению.

Попробуйте сочетание капча+ТОП, и почувствуете сами, сколько времени у Вас высвободится на то, чтобы развивать и улучшать свой сайт. Берегите свой сайт и время своей жизни.

P.S. Через три месяца после создания этого блога капчу убрала по настойчивому совету своих комментаторов — мешает. Пока смотрю, что из этого выйдет. Да, Акисмет защищает, но с капчей у меня вообще не было спама от ботов. Сейчас же такое валится… Но подожду. Насколько хватит терпения выполнять правила приличия))

  • Tutorial

Сколько лет существует Хабр - столько лет на нём регулярно появляются посты про очередную капчу - будь то скрипт генерации картинки, новая идея капчи с котиками и тому подобное. Самый свежий пример того, что человек не совсем понимает - как же всё таки должна работать капча (см. текст поста и последние комментарии), но при этом делится своими заблуждениями с сообществом. Складывается ощущение, что капча - это такая terra incognita для большинства разработчиков - как для тех, кто просто прикручивает её к очередной форме в надежде на то, что она будет работать «из коробки», так и для тех кто придумывает капчи вроде тех, на которых надо выбрать картинку с котиком из нескольких фото.

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

А для затравки - если вы считаете, что такая проверка капчи будет работать:
if($_POST["captcha"] == $_SESSION["captcha"]) return true; (пример из практики)
то вы глубоко заблуждаетесь.

Captcha

Согласно своему определению, captcha - это автоматизированный публичный тест Тьюринга (тест который может пройти человек, но не компьютер). В статье я буду рассматривать свойтсва капчи на примере самого распространненого её вида - текста на картинке, хотя почти все написанное одинаково применимо к любому виду капчи.

Два главных свойства капчи

Любая капча должна обладать двумя свойствами, без которых она не будет работать:

Устойчивость к распознаванию - свойство, защищающее капчу от распознавания алгоритмом - например системой распознавания текста. Гарантирует то, что человек сможет прочитать текст на картинке, а компьютер нет.
Антипример: стандартная капча форумов phpBB 2.x таким свойством не обладала - из-за относительной простоты распознавания появились скрипты, которые спамили все подряд форумы вынуждая веб-мастеров менять капчу на более стойкую.

Устойчивость к угадыванию - свойство капчи, не позволяющее угадать её значение за небольшое число попыток (менее 1000). Если набор возможных значений капчи невелик, программе не составит труда угадать её подбором вместо распознавания.
Антипример: арифметическая капча вроде «1+2» (перебор чисел от 1 до 20 в скором времени даст результат).
Антипример: выбрать из нескольких картинок ту, на которой изображён котик.

Проверка капчи

Значение для проверки должно храниться на сервере, а не передаваться вместе с картинкой в браузер. Для сопоставления посетителя и правильного значения капчи необходимо использовать некий ключ, который передаётся вместе с капчей (идентификатор сессии, номер капчи и т.п.)
Антипример: если передавать саму капчу и значение для ее проверки (в том числе зашифрованное), то человеку достаточно один раз распознать такую капчу и далее использовать комбинацию «ответ»-«значение для проверки» в своём скрипте (по ссылке в начале поста как раз такой случай)

Перед проверкой ответа - надо убедиться, что он не пустой. В противном случае, злоумышленник может не загружая картинку или удалив идентификатор текущей сессии, передать пустое значение и пройти капчу, т.к. произойдёт сравнение двух пустых строк (в PHP несуществующее значение равно пустой строке).
Антипример: уже упомянутый мной код if($_POST["captcha"] == $_SESSION["captcha"]) return true;
Причем этот код был написан опытным программистом.

После проверки, сохраненное значение капчи необходимо удалить. Если не сделать этого, злоумышленник сможет использовать данное значение снова неограниченное число раз. Да, при обновлении страницы с формой обновляется и капча (либо при генерации формы, либо при генерации картинки), вот только скрипт может не загружать форму снова (надо упомянуть, что это не актуально если на сайте используются одноразовые csrf-токены для форм).
Антипример: гипотетическая форма логина, в которой достаточно один раз ввести капчу правильно, и далее подбирать пароль скриптом, избегая перегенерации капчи на сервере.

Пуленепробиваемая капча

Защита от перебора. Если ваша капча устойчива к распознаванию, но не очень устойчива к перебору (например на ней надо прочитать всего 3-4 цифры), желательно ограничить число неправильных ответов «с одного ip» / «для одного логина» / etc. Такие ограничения необходимо проверять ДО проверки самой капчи (то есть даже в случае правильно введенной капчи, при наличии ограничения она не должна считаться пройденной) иначе оно не будет препятствовать перебору.

Защита от DoS. При генерации капчи на своем сервере, надо понимать что это удобный вектор проведения DoS атак (которую, в отличие от DDoS, может устроить любой школьник). Для защиты можно ограничить число генерации капчи для одного ip, кэшированием капч и т.д.

Защита от распознавания. Если вы выбираете капчу, или вдруг собираетесь написать её сами, желательно понимать какая капча более защищена от распознавания. Существуют готовые универсальные скрипты распознавания капчи, работающие по принципу OCR , а в случае если ваш сайт заинтересует спамеров есть риск, что будут использовать / писать скрипт конкретно под вашу капчу. Последнее правда относится больше к сайтам уровня Яндекс или vk, а вот вариант с защитой от банальных OCR желательно предусмотреть.

Защита от антигейтов. Если говорить формально, то капча как тест Тьюринга не обязана защищать вас от антигейтов, так как в этом случае её будет распознавать человек. С практической же точки зрения, этот вопрос весьма актуален и защищаться как-то надо.
Тут нет и не может быть «золотого стандарта» (ибо в таком случае антигейты внедрят его поддержку), поэтому вы вольны дополнять капчу любыми ухищрениями, чтобы сделать её распознавание через антигейт невозможным. Например:
- нестандартная капча (сбор паззла, поворот изображения, клик по области на фото и т.п.);
- кириллическая капча - самое простое решение, но имеет ряд минусов: подходит только для проектов с русскоязычной аудиторией, есть антигейты с поддержкой кириллицы;
- использование виртуальной клавиатуры рядом с капчей для ввода нестандартных символов или фигур (может быть неудобно пользователям мобильных);

Юзабилити

Не просите ввести капчу, если вы уже убедились, что перед вами человек. Тут однако, надо быть осторожным, чтобы форму нельзя было использовать скриптом неограниченное число раз после однократного ввода капчи человеком.
Пример: форма регистрации. Если я где-то регистрируюсь, и забыл ввести поле «почтовый индекс», но правильно ввёл капчу - не надо показывать мне новую. Потратьте 10 минут на то, чтобы сохранить где-то у себя, что вот эту конкретную форму сейчас пытается заполнить живой человек.

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

Отказ от использования капчи

Лучшая капча - отсутствие капчи. Там где можно отказаться от её использования - это надо сделать. Возможно для этого придется реализовать дополнительные лимиты и проверки, но пользователи скажут вам спасибо.
Но тут надо быть очень осторожным. Например: форма регистрации без капчи, с полем email на который приходит письмо с активацией. Без дополнительных средств защиты такую форму могут завалить «левыми» адресами, и ваш сайт включат в черные списки почтовые службы. В таком случае можно обходиться без капчи, но только если у вас есть другой рубеж защиты, вроде лимита по ip.

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

0 Безусловно, вы уже имеете представление, что значит Капча , а быть может не раз уже с ней встречались, но вряд ли знали, что у этой неразборчивой и кривой надписи, которую следует вводить при регистрации имеется название. Так вот, кто ещё не в курсе, её называют Капчей . Оно произошло от английского слова "captcha ". Хочу посоветовать вам ещё несколько толковых публикаций на тематику интернет жаргона, например, что такое Яшка , что значит Ютуб , как понять термин Юзать , что означает слово Эпик и т. п.

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

Функции и назначение Капчи

Для чего потребовалась Капча? Ведь по большей части такое нововведение способно оттолкнуть придирчивого пользователя. Если вы частый посетитель социальной сети Вконтакте, то вы вероятно в курсе, что при максимальном количестве кликов или действий в короткий промежуток времени может вызвать появление Капчи . Например, если вы часто отсылаете сообщения своим друзьям (примерно сообщение в секунду), то тут же появится Капча, и ненавязчиво потребует, доказательств, что вы не бот. Скорее всего в данном случае программа заподозрила вас в спаме, а это весьма серьёзный проступок на просторах всемирной паутины. Создатели Капчи предполагают, что боты вряд ли смогут прочесть кривой текст с рисунка, поэтому тот кто её ввёл правильно определённо является человеком.

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


Хотя со временем программисты создают таких ботов, что некоторые из них способны сломать простую Капчу. Как бы ни была сложна защита со временем и для неё найдётся свой ключик. Сейчас многие кодеры увлеклись нейронными самообучающимися сетями . Для них специально вытаскиваются десятки, если не сотни тысяч картинок капчи, чтобы те их смогли опознать в дальнейшем. Существуют особые сервисы, где сидят тысячи китайцев и распознают Капчу по заказу за небольшую плату.

Хотелось бы добавить про так называемую математическую Капчу . Она может быть, как очень сложной, так и совсем простой. Большинству пользователей пришлась по душе Капча в которой требуется вычесть или сложить пару чисел. Это намного удобней, чем сидеть несколько минут и придирчиво разбирать кривой текст. Хотя во всём нужна мера, если вы сделаете Капчу более сложной, то не все пользователи смогут решить необходимую задачу.

Ну, а в случаях, когда избежать капчу программно не получается, CAPTCHA вводится вручную с применением труда реальных людей, которые отправляют эти данные злоумышленнику или решают капчу в режиме реального времени благодаря API.

Итак, с инструментами и мотивами хакеров разобрались. Давайте теперь рассмотрим самые распространённые способы обхода капчи, рассортировав их на две группы: те, которые возможны благодаря ошибкам программистов при реализации CAPTCHA и те, для которых используются современные технологии.

Начнём по порядку, и я постараюсь их разместить в порядке возрастания сложности защиты от них, начав с самых примитивных и заканчивая теми, от которых ещё не придумали способов защиты.

Для создания интриги скажу, что их на данный момент существует целых три.

Обход капчи из-за ошибок реализации

Если спросить у создателей собственных реализаций CAPTCHA о том, как обойти капчу, они назовут вам, как минимум несколько способов. Но, самое интересное, что они сами же порой оставляют в своих творениях окна и двери для их взлома.

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

Но, иногда имеет место быть и неопытность, из-за которой о некоторых способах обхода капчи программисту просто не было известно на момент разработки.

Как я и обещал, в данном разделе я рассмотрю самые распространённые, а также способы защиты от них. И начнём, как обещалось, с самого примитива.

Обход капчи с фиксированным набором задач

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

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

Т.е. заходим на такой сайт, подбираем ответы, составляем БД из заданий и правильных решений и пишем бота для брутфорс атак, который будет подбирать подходящие варианты.

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

А если такие люди и есть, то они очень быстро учатся на своих ошибках, когда теряют контроль над своим сайтом или клиентов, которых из-за таких творений взламывали.

Защита: никогда не создавать капчи с набором задач, решения к которым можно подобрать вручную. Если для решения капчи нужно решить какой-либо математический пример или ввести символы с картинки, то задания и ответы на них должны генерироваться автоматически.

Ещё одним способом защиты от подобного ввода капчи автоматом является изменения имени поля формы, в которое должен вводиться ответ. Если имя поля, например, всегда будет «captcha», то злоумышленнику будет проще такую капчу взломать. Его программа-робот будет всего лишь отправлять запрос к серверному скрипту, указанному в HTML атрибуте «action» формы, содержащем необходимое значение капчи.

Если в этой ситуации имя поля капчи будет всё время одинаковым, то хакер просто воспользуется базой наиболее распространённых названий полей капчи, составить которую можно самостоятельно при изучении различных сайтов или скачать в готовом виде на специализированных ресурсах (перечислять их для пропаганды хакерства я не буду).

Если же имя поля, как и само задание для прохождения капчи будет генерироваться на сервере, то никакая база имён капчи не поможет. Для того, чтобы использовать динамическое название поля, на практике капча генерируется одним скриптом, а обрабатывается другим.

В данном случае реализации капчи имеется один существенный нюанс: скрипту, обрабатывающему правильность её ввода, нужно будет как-то передавать имя поля капчи. Делается это чаще всего с помощью скрытого input формы, data-атрибутов или передаче их через cookies или сессию.

Ключевым моментом является то, что нельзя передавать имя напрямую, т.е поле капчи называется «captcha_mysite», а в hidden поле стоит значение «captcha_mysite» или «site». Оно обязательно должно быть зашифровано, причём расшифровка должна происходить с применением того же алгоритма, что и шифрование.

Поскольку алгоритм шифрования будет храниться на сервере, то злоумышленник не сможет просто так его узнать (только если он не получит доступ к содержимому серверного скрипта).

Кстати, достаточно вместо имени поля использовать случайную последовательность символов, которую в языке PHP очень просто получить с помощью функции uniqid().

Обход капчи с помощью сессий

Если реализация капчи подразумевает хранение правильного ответа в сессии, и сессия не создаётся заново после каждого ввода капчи, то злоумышленники могут узнать идентификатор сессии и узнать зашифрованное значение CAPTCHA.

Таким образом, они с лёгкостью смогут подобрать алгоритм шифрования и использовать его для дальнейших автоматизированных брутфорс атак с помощью ботов.

Также, если в коде проверки ответа пользователя на сервере программист не выполнит проверку на пустоту переменной сессии, в которой передаётся ответ пользователя, то хакер может использовать несуществующий идентификатор сессии, для которой переменной просто не будет существовать.

За счёт этого упущения подобные капчи могут быть пройдены с помощью подсовывания несуществующих id сессий и пустых значений капчи.

Защита: как бы ни хотелось отказаться от использования сессий для передачи значений капчи, это сильно большая цена для обеспечения безопасности капчи от взломов. Поэтому сессии, значения их переменных и идентификаторов просто нужно тщательно защищать, чтобы хакер не мог воспользоваться хранимой в них информацией.

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

Взлом капчи из-за секретной информации в клиентском коде

Иногда капчи делают таким образом, что при передаче пользовательских значений на сервер используют шифрование с использованием так называемой «соли», т.е. добавления к значению CAPTCHA ID сессии, значения IP или других уникальных данных. Нередко таковым может являться простая случайная последовательность символов.

И главным условием решения капчи является совпадение зашифрованного значения CAPTCHA, введённого пользователем, с её правильным значением, которое было сгенерировано при открытии страницы и записано в сессию или другое хранилище для дальнейшей передачи на сервер.

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

Если же эти уникальные значения не будут совпадать, то, скорее всего, капча была введена роботом автоматически.

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

Защита: при реализации CAPTCHA самостоятельно нужно учитывать данную брешь в безопасности и, если для разгадывания капчи необходимо будет учитывать значение какого-то уникального идентификатора, то нужно следить, чтобы его упоминания не было ни в JS, ни в HTML коде, который можно просмотреть в браузере.

Также нужно пересоздавать ID сессии и генерировать другие уникальные значения (включая и саму CAPTCHA, если это возможно) после каждой попытки ввода капчи, что убережёт вас или, по крайней мере, усложнит задачу хакерам по взлому сайта путём автоматического подбора правильного значения.

Ещё одно средство защиты — по возможности, блокировать действия по IP и количествам попыток.

Как обойти капчу без изменения IP

Брутфорс атака является эффективным способом обхода капчи не только в случаях реализации её с фиксированным набором заданий и их решений.

Ещё одна ошибка при реализации CAPTCHA, которая делает её уязвимой для автоматизированных атак, это — отсутствие ограничений времени на решение капчи и количество попыток.

Обойти капчу в таком случае можно будет с помощью специальной программы, которая будет собирать базу вопросов или подбирать ответы из имеющегося перечня. Причём, всё это будет сделано в автоматическом режиме благодаря современным методам машинного обучения и наработкам в области искусственного интеллекта, которые за последние годы сделали большой шаг вперёд.

Защита: при реализации по-настоящему безопасной капчи нужно лимитировать время на ответ и количество попыток решения капчи с одного IP для блокирования брутфорс атак роботов.

К примеру, если между генерацией капчи и ответом пользователя прошло менее 2 секунд, то считать такого пользователя роботом с выдачей соответствующего сообщения на экран. Текст сообщения должен содержать указания реальным пользователям, что ввод не должен производиться так быстро (на случай, если человек физически смог ввести ответ быстрее).

Если это действительно был человек, то он примет соответствующие меры, а если робот — он продолжит предпринимать попытки обхода капчи.

Такие попытки нужно считать неверными с фиксацией их количества в переменной сессии и блокировании дальнейших действий для пользователей по их IP. Будет не лишним также для таких заблокированных адресов выдавать вместо капчи сообщение связаться с администратором в случае, если заблокированный пользователь был реальным человеком.

И ещё одним эффективным способом борьбы с ботами является введение лимитов на определённые действия на сайте. К примеру, одна регистрация с одного IP. Здесь главное — не заигрываться и не доходить до лимитов на количество комментариев для одного уникального пользователя.

Но, по правде говоря, эти меры мало чем помогут благодаря существованию прокси серверов.

Обход капчи с помощью прокси

Даже в ситуациях, когда блокирование большого количества попыток решения капчи по IP всё-таки происходит, 100% защиту от роботов это мероприятие не обеспечивает.

Всему виной прокси сервера и программы анонимайзеры, работающие на их базе, о которых известно, пожалуй, каждому современному школьнику, ищущему способы обхода родительского контроля и блокировки запретных сайтов.

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

Схема проста: пользователь подключается к прокси серверу, где его данные шифруются или подменяются другими (например, вам может быть присвоен IP адрес другой страны), а затем происходит запрос на целевой сайт, к которому клиент желает подключиться.

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

А на некоторых сайтах, где капча появляется только лишь при выполнении большого количества одинаковых действий (например, в ВК при добавлении большого количества друзей) она вообще может не появиться, если каждое действие будет производиться с нового IP и с соблюдением таймаутов между попытками решения капчи, чтобы поведение бота было похоже на поведение реального человека.

Данный способ использовали ещё полвека назад при написании первых программ с целью прохождения теста Тьюринга, реализацией которого и является CAPTCHA.

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

Защита: к сожалению, защититься от взлома капчи, отслеживая злоумышленников по IP, благодаря наличию анонимайзеров и открытых баз PROXY никак не удастся.

Единственная надежда, что сами PROXY сервера могут вводить ограничения на количество используемых IP одним пользователем и количеств подключений с каждого из них.

По этой причине не стоит отказываться от проверки IP вообще. Благодаря вашим мерам предосторожности, защищающим от обхода капчи, можно будет рано или поздно заблокировать хакера на том или ином уровне.

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

Ввод капчи автоматом с помощью эмуляторов действий

Если для прохождения CAPTCHA нужно произвести определённое действие (нажатие на кнопку, перемещение ползунка и т.д.), то обойти капчу в данной ситуации можно ещё и сэмулировав необходимое действие (клик на определённый элемент управления или иное действие).

Единственная проблема, которая может стоять в данной ситуации перед хакером — это как найти нужный элемент управления на сайте программно.

Проще всего это сделать по его координатам или положению относительно каких-то статических элементов ресурса.

Защита: чтобы уберечься от автоматического ввода капчи в данном случае необходимо постоянно менять положение элемента управления, позволяющего решить CAPTCHA. Т.е. если из трёх человечков нужно выбрать только того, у которого поднята рука, его ни в коем случае нельзя размещать постоянно на одном и том же месте.

Ну, а в случаях других реализаций капчи, когда это невозможно (например, для кнопки скачивания или поля «я не робот», у которых может быть только один правильный ответ), необходимо использовать иные методы защиты, способные остановить роботов от автоматического решения капчи.

Как обойти капчу при помощи высоких технологий

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

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

Итак, как избежать капчу при помощи современных технологий?

Обход капчи с помощью OCR

OCR (Optical Character Recognition — оптическое распознавание символов) — технология для распознавания печатного или машинописного текста для дальнейшего его использования в электронном формате. Наиболее известным ПО, реализующим эту технологию, является Adobe FineReader.

Успешно используется при создании программ автоматического ввода капчи, успешно распознающих и решающих графические капчи, для прохождения которых нужно ввести последовательность символов, изображённых на картинке.

Хакеры, естественно не пользуются Adobe FineReader (хотя, может, и такие есть 🙂), а пишут специальные скрипты, которые с применением различных готовых библиотек для работы с изображениями либо с использованием возможностей языка для работы с графикой, распознают капчу и выдают символьную последовательность, изображённую на ней.

В Интернете я нашёл достаточное количество примеров таких скриптов. Принцип их работы заключался в следующем:

  • очищение изображения, используемого в графических CAPTCHA, от различных шумов;
  • разбиение изображённой строки на отдельные символы;
  • сравнение каждого из них с заготовленной картинкой (образцом).

Графические образцы подготавливались с учётом различных шрифтов и возможных искажений (наклоны, повороты и т.д.).

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

Защита: собственно говоря, с целью запутывания OCR программ и применяются всех раздражающие шумы и искажения символов на картинках, из-за которых текст иногда сложно разобрать даже человеку. Но, в случае роботов это тоже хорошо работает, в результате чего OCR алгоритмы не могут выдать 100% точный результат, что положительно влияет на безопасность капчи и сайтов, её использующих.

Если вы решили использовать графические капчи, для прохождения которых нужно ввести символы, изображённые на картинке, то нужно следовать следующим рекомендациям:

  1. Символы на разных CAPTCHA должны иметь различные координаты.
  2. Если вы используете какие-то эффекты шума для создания фона, то его цвет должен совпадать с цветом символов, иначе фон можно легко убрать, выделив символы для распознавания.
  3. Расстояние между символами должно быть минимально. Можно даже накладывать их друг на друга, но только без фанатизма, чтобы реальные пользователи могли их распознать.
  4. Использовать различные шрифты, чтобы было сложно подобрать подходящий для распознавания.
  5. Всячески искажать символы, менять их начертание и толщину.
  6. Использовать специальные библиотеки, позволяющие изменять символы таким образом, что для их программного распознания будет невозможно подобрать шрифт. Примером такого решения является капча от создателя ресурса captcha.ru, при генерации которой используется авторский алгоритм волнообразного искажения символов.

Все эти меры позволяют усложнить распознаваемость графической капчи для OCR систем и сократить количество автоматических вводов капчи.

Как пройти капчу с помощью нейронных сетей

Если OCR — технология достаточно старая (первые запатентованные устройства известны в начале XX века), то искусственные нейронные сети (ИНС) появились лишь во второй половине предыдущего столетия (для технологий 50 лет — это существенный возраст 🙂).

Именно алгоритмы ИНС лежат в основе искусственного интеллекта (ИИ), целью которого является создание программ и устройств, наделённых творческими функциями, т.е. создание рукотворного человека.

На данный момент ИИ постоянно развивается, и с каждым днём появляются всё новые и изобретения, обладающими не виданными ранее свойствами.

На последней конференции, посвящённой нейронным сетям, на которой я присутствовал, сообщалось, что компания Google, активно занимающаяся разработками в данной области, уже анонсировала общедоступные облачные сервисы, работающие на базе ИНС.

С помощью их можно:

  • распознавать объекты на фотографиях (от пола изображённого человека и марки его джинсов до того, какой игре принадлежит анализируемая картинка, со всей её цветовой палитрой, названием локации и того, что на ней происходит);
  • управлять устройствами голосом и жестами;
  • писать аннотации к видео на основании того, что происходит в видеоролике и др.

Естественно, что при данных возможностях создание программы для автоматического ввода капчи с применением принципов ИНС не представляет сложности для знающих людей.

Один из таких продуктов был разработан компанией Vicarious в 2014 году. Разработанная ей нейронная сеть способна распознавать капчу в 90% случаях (напомню, что для решения классического теста Тьюринга, которым и является CAPTCHA, необходим всего лишь 1% правильных ответов).

Защита: К сожалению, защититься от данного вида атак невозможно. И к счастью, ИНС от Vicarious не будет использоваться для целенаправленных атак для обхода капчи на сайтах, т.к. она слишком дорогостоящая для таких мелких задач (сами производители говорят, что она представляет из себя кластер из множества серверов). Основная её область применения — это решение различных задач медицины и робототехники.

А взлом капчи с её помощью — это лишь демонстрация возможностей.

Но время идёт, дорогостоящие ещё вчера технологии удешевляются, и не за горами то время, когда ИНС продукты получат повсеместное распространение. Поэтому вполне возможно, что в будущем появятся боты для автоматического ввода капчи, наделённые искусственным интеллектом.

Обход капчи с помощью общедоступных сервисов

По мере развития систем OCR и ИИ меры усложнения графических капчей становились всё сложнее и сложнее, что позволяло их разработчикам прилагать колоссальные усилия при реализации. Но всё равно они оказывались тщетными, т.к. они не обеспечивали 100% защиту сайтов от автоматизированных атак.

Поэтому Google пошёл, как мне кажется, верным путём и решил просто изобрести новый стандарт noCAPTCHA, отказавшись от ручного ввода символов с картинок.

При разработке reCAPTCHA noCAPTCHA использовался опыт по борьбе с роботами в эпоху зарождения капчи и современные наработки в области искусственного интеллекта, что позволяет обеспечить должный уровень безопасности сайта, но и не сильно усложнять при этом жизнь пользователям Интернета.

Но, несмотря на то, что данный стандарт появился достаточно недавно, в 2015 году, уже найден способ её автоматического решения. И он заключается далеко не в применении искусственного интеллекта.

Всё намного банальней — для прохождения Google reCAPTCHA достаточно использовать сервисы самого Google по распознаванию картинок и речи.

Распознавание картинок в случае с reCAPTCHA v2 (та самая noCAPTCHA) вряд ли поможет, т.к. при графических задачах нужно выбирать изображения, на которых присутствуют необходимые объекты, а не вводить изображённые символы, как это было в предыдущей версии.

А вот услуги сервиса Google Speech Recognition, являющийся одним из достижений Гугл в области искусственного интеллекта, о которых упоминалось в предыдущем способе обхода капчи, будет очень кстати. Поскольку сервис предоставляет API, то создать приложение на его базе не составляет труда.

Защита: к сожалению, в данной ситуации, как и в предыдущей, где для обхода капчи использовались ИНС, защититься от обхода капчи не удастся. Единственным положительным моментом снова является относительная доступность подходящих сервисов, т.к. Google даёт для их использования только тестовые $300.

После их завершения услуги становятся платными. Но, для хакеров вряд ли это будет помехой, т.к. на атаках, использующих ввод капчи автоматом, они могут заработать ещё больше.

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

Как пройти капчу, используя человеческий труд

В завершение списка способов обхода капчи я решил рассмотреть не подходящий ни к одной из перечисленных выше категорий.

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

И в то же время, данный способ помогает взломать капчу любой сложности в 100% случаях и, причём, сделать это без особых финансовых, физических и моральных усилий.

Речь идёт об одном из современных способов добычи денег — , который появился, кстати, примерно тогда, когда CAPTCHA стала сложно распознаваемой программно.

Его суть состоит в том, что создаётся специальный сервис, который якобы позволяет людям зарабатывать деньги (в основном, небольшие, которых может хватить разве что индусам или школьникам, которые ищут любые способы раздобыть деньги), решая вручную капчи.

А предоставлять эти капчи могут все желающие, кому необходимы их решения.

В основном, это хакеры, которые используют ответы реальных пользователей в своих корыстных целях:

  • автоматизации заработка;
  • рассылка спама;
  • скупка билетов и товаров в Интернет магазинах для более дорогой перепродажи;
  • взлом сайтов и т.д.

Для более удобного процесса сервисы даже предоставляют API, благодаря которому прохождение капчи может осуществляться в онлайн-режиме. Т.е. пользователь вводит капчу через сервис, а в это время его ответ используется для подтверждения онлайн покупки.

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

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

Естественно, мы долго не думаем, т.к. получить возможность скачать долгожданный фильм в HD качестве абсолютно бесплатно за проставление какой-то галочки в поле «Я не робот» — это просто мелочь. А в это время ваше действие по API используется для обхода капчи на другом стороннем сайте.

Отсюда мораль: всегда помните, что бесплатный сыр только в мышеловке и ничего бесплатного не бывает.

Защита: к сожалению, на сегодня это самый эффективный метод обхода капчи, от которого нет средств защиты. И не будет до тех пор, пока не переведутся желающие зарабатывать копейки каторжным трудом и любители бесплатного контента, т.е., скорее всего — никогда.

Обход капчи — выводы

В ходе написания данной статьи я пришёл к выводу, что капча, несмотря на отличную идею, с которой она задумывалась, а именно, защита сайтов от роботов, уже давно перестала выполнять свои функции.

Если от автоматизированных обходов капчи, использующих слабые места реализаций CAPTCHA ещё можно уберечься, устранив все проблемы с их безопасностью, то от ввода капчи реальными пользователями за деньги защититься просто невозможно.

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

Также к «непобедимым» способам обхода капчи относятся технологии искусственного интеллекта, активно развивающиеся в последние годы.

При этом, с целью усложнить жизнь хакерам, капчи постоянно «раздуваются» новым функционалом, из-за которого их прохождение становится сложной и утомительной задачей даже для реальных пользователей сайтов.

Вспомнить ту же Google reCAPTCHA: поставь галочку, если Гуглу что-то не понравилось, выбери ещё и нужные картинки (с дорожными знаками, кстати, у меня до сих пор наблюдаются проблемы, т.к. я могу пройти такое задание где-то с 5 попытки). Не много ли возни для того, чтобы оставить комментарий или зарегистрироваться на сайте? Проще уже найти другой ресурс…

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

В то же время тот факт, что CAPTCHA продолжает использоваться в качестве технологии киберзащиты и постоянно развивается, в том числе компанией Google, которая не станет инвестировать деньги в сомнительные проекты, говорит о том, что данная технология будет существовать ещё долго.

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