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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Я решил сделать небольшую паузу в публикациях о данном PHP фреймворке и переключиться на что-то другое в качестве «активного отдыха».

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

Не догадываетесь, о чём пойдёт речь?

Всё вышесказанное — о CAPTCHA, которую видели и использовали, наверное 90% всех пользователей Интернета, но, к сожалению, не все знают досконально что такое капча и какие задачи она позволяет решать.

Что такое капча?

В поисковиках масса людей каждый день вводят запрос «перевод CAPTCHA». Однако, правильного ответа на данный вопрос вы не найдёте ни в этой, ни в других похожих статьях.

CAPTCHA — это не просто какой-то специально выдуманный термин, а аббревиатура слов Completely Automated Public Turing test to tell Computers and Humans Apart, что в дословном переводе означает «полностью автоматизированный публичный тест Тьюринга для распознавания компьютеров и людей». Потому данное слово правильно писать заглавными буквами.

В русскоязычном сегменте Интернета его часто называют «капча», т.к. примерно так CAPTCHA произносится по-русски. Заглавные буквы при этом опускаются, из-за чего для некоторых читателей изложенная история возникновения слова «капча» может оказаться в новинку, однако при этом помогает проследить логическую связь между ним и «автоматизированным тестом Тьюринга».

Думаю, расшифровка аббревиатуры сама по себе отлично говорит, что такое CAPTCHA. Единственную неясность может представить собой тест Тьюринга… Если вы думаете, что на этом месте я буду вас грузить кучей формул и определений, то вы ошибаетесь 🙂

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

Жил был на свете (а именно, в начале XX века) один английский математик по имени Алан Тьюринг. Личность, кстати, достаточно известная в узких кругах, который придумал много хорошего, за что про него даже фильмы снимать стали (это именно тот мужик, которого играл Бенедикт Камбербетч в картине «Игра в имитацию»).

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

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

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

Но неверно думать, что обличить компьютер очень просто и легко 🙂

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

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

Но, несмотря на все эти уловки, уже в 1966 году (ничего себе «уже» — через 16 лет!) появилась компьютерная программа с поэтичным названием ELIZA, способная пройти данный тест. Многие заумные товарищи до сих пор сомневаются, считать ли эксперимент с Элизой тестом Тьюринга или нет, но факт остаётся фактом — железка смогла запутать людей.

Так вот CAPTCHA — это современный тест Тьюринга, который помогает отсеять роботов от людей в автоматическом режиме. Только в роли судьи выступает компьютерный алгоритм. Из-за этого капчу иногда называют обратным тестом Тьюринга.

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

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

Кстати, несмотря на то, что сам тест Тьюринга был изобретён в 1950 году, CAPTCHA — явление достаточно молодое. Похожие на современную капчу изобретения появились сравнительно недавно — в 1997 году, а сам термин был придуман в 2003.

Думаю, теперь вам стало понятно, что такое капча, как она появилась и когда. Спрашивается только «Зачем?». Вопрос хороший, поэтому с ответом тянуть долго не буду 🙂

Спрашивается, зачем вообще понадобилось определять с помощью CAPTCHA, кто зашёл на сайт: человек или робот?

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

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

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

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

Если вы сами пытались когда-нибудь самостоятельно оцифровывать книги с помощью программы Adobe FineReader или подобной (не знаю как вы, а я в студенческие годы часто таким занимался при написании рефератов и курсовых 🙂), то знаете, что распознавание далеко не 100%.

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

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

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

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

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

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

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

Благодаря всему вышесказанному создатели reCAPTCHA продвигают свой проект под лозунгом «Остановите спам — читайте книги!». И нужно сказать — это работает 🙂

По официальной информации создателя reCAPTCHA, Луиса фон Ана, ежедневно его капча используется до 100 миллионов раз, что приводит к прочтению примерно 2,5 миллионов книг в год.

Google приобрёл reCAPTCHA в 2009 году и начал использовать её для оцифровки архива газет New York Times с 1851 года до наших дней и книг из Google Books до 2011 года. В 2012 году, когда эти ресурсы были исчерпаны, Google приступил к распознаванию номеров зданий и изображений из Google Maps и Google Street Views, что является ещё одной задачей, которую можно решить с помощью капчи.

Почему я вдруг решил рассказать избирательно о Google reCAPTCHA? Да потому что это продукт Гугла, который считается генератором различных стандартов в области веб, кибербезопасности и прочих сферах. Следовательно, reCAPTCHA — это на сегодня неофициальный стандарт капчи — всё просто 🙂

Поэтому в тексте данной статьи она промелькнёт ещё не раз.

Виды капчи

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

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

Хотя, не удивлюсь, что на каком-то математическом форуме можно найти капчу в виде дифференциального уравнения или какую-то задачу из теста Айзенка (и обязательно на время) с целью отсеивания людей с низким IQ 🙂

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

1. Графическая капча

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

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

До сих пор успешно используется такими ресурсами как Яндекс и Вконтакте.

Сам был удивлён такому красивому варианту Яндекс капчи, который мне попался как раз во время написания данной статьи 🙂

2. Логическая капча

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

Это могут быть:

  • арифметические примеры (например, 2+3=?);
  • задачи по выбору определённых объектов из предложенных (найти женщину из всех фотографий, человечка с поднятой рукой, животных, машин и т.д.);
  • указание определённой цифры из последовательности чисел (например, выбрать третью цифру из числа 2312145);
  • выбор слова, начинающегося с определённой буквы (например, нужно выбрать слово, начинающееся на «с» среди «Жевачка, доска, стул»);
  • написать буквами число с картинки и наоборот.

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

3. Поведенческая капча

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

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

Среди самых распространённых примеров поведенческой капчи можно выделить следующие:

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

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

Но самая интересная капча из разряда поведенческих, которую я встречал, — это специализированная радиотехническая капча, которую могут пройти только знатоки радиотехники. Зато есть стимул поступать на радиотехнический факультет и учиться 5 лет в университете 🙂

4. Звуковая капча

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

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

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

Её, наверное, все видели на Google reCAPTCHA.

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

По этой причине я и разместил данный вид CAPTCHA в конце списка.

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

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

Где можно встретить капчу на сайте

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

Среди них:

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

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

  1. Форма регистрации на сайте.
  2. Форма авторизации на ресурсе.
  3. Форма добавления комментариев.
  4. Форма восстановления пароля.
  5. Форма скачивания файла.

Иногда CAPTCHA появляется при слишком частом выполнении какого-либо действия (лайка, добавления друзей, кликов на рекламе и т.д.).

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

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

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

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

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

Запасайтесь попкорном и приятного вам просмотра.

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

Что такое капча (CAPTCHA)? Это управляемый компьютером тест, который позволяет с той или иной точностью определить принадлежность пользователя к одной из категорий: человек или компьютер (робот, бот). Так можно предотвратить автоматические регистрации в сервисах, например, во избежание спам-рассылок. В качестве проблемных форм в капчах используются:
последовательность символов, которые необходимо ввести,
загадка, ответ на которую необходимо дать,
арифметические пример, ответ на который следует найти и вписать в поле;
наборы картинок, в которых нужно отметить все изображения, содержащие определённый объект, и др.

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

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

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

Таким образом, в ответах на вопросы «что такое капча?», «для чего она нужна?», «в каких формах реализуется?» и «можно ли её обойти?» нет никаких сложных аспектов. Однако важно иметь в виду, что гарантировать полную защиту сайта при помощи CAPTCHA-тестов невозможно, но частично отсеивать большое количество автоматических (машинных) запросов, которые могут привести к рассылке спама, вполне возможно.

CAPTCHA - сокращение от английского Completely Automated Public Turing test to tell Computers and Humans Apart – полностью автоматизированный публичный тест Тьюринга для различия компьютеров и людей. В рунете нередко можно слышать транскрипцию «капча» .

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

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

Методы CAPTCHA

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

1. Самый распространённый метод: пользователю предлагают ввести цифры/символы, изображённые на рисунке . Как правило, символы искажены, размыты, зашумлены помехами.

2. Пользователю предлагается изображение с написанными текстом цифрами и ввести цифры.

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

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

5. Метод, основанный на распознавании человеческой речи .

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

Варианты 1, 2 и 3 легкопереносимы с сервиса на сервис и легконастраиваемы. Они не требовательны к хостингам, нересурсоёмки. В то же время, степень защиты остаётся достаточно высокой (при правильной настройке). Методы 4, 5, 6 требуют более серьёзной настройки либо подключение к специализированным сервисам, предоставляющим услуги CAPTCHA.

Самым распространённым является метод 1 - дублирование изображённых символов и букв в специальном поле. Методы, основанные на человеческих знаниях и чувствах, а также связанные с арифметическими или логическими действиями, зависят от менталитета, грамотности посетителя или норм морали, принятых на территории проживания. Это может давать неверные трактования капчи, соответственно, ошибки при тестировании. Естественно, подобные действия могут привести к оттоку посетителей с сайта.

Ошибки, уязвимости и методы противодействия/защиты

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

Достаточно яркий пример. Вызов картинки CAPTCHA через явное указание проверочного кода, передачей его в качестве параметра вызова изображения: , где «hqhqhq» фигурирует в качестве запрашиваемого кода подтверждения. Уязвимость реализации очевидна: бот сканирует код страницы и выделяет проверочный код, подставляя его в соответствующее поле. Ваша защита ботом пройдена в доли секунды, а реальному человеку понадобится несколько секунд или даже минут на ввод проверочного кода.

Существует метод перебора , применяемый ботами. Капча всегда связана с сессией посетителя. При сравнительно небольшом варианте значений CAPTCHA , бот, регистрируя сессию, последовательно перебирает все варианты, рано или поздно угадывая верное значение.

  • 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.

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



Понравилась статья? Поделиться с друзьями: