Варианты капчи. ReCAPTCHA установка и получение ключей. Какие виды капчи бывают

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

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

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

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

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

Какую капчу использовать для сайта?

Вариант № 1 Recaptcha

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

Сколько лет существует Хабр - столько лет на нём регулярно появляются посты про очередную капчу - будь то скрипт генерации картинки, новая идея капчи с котиками и тому подобное. Самый свежий пример того, что человек не совсем понимает - как же всё таки должна работать капча (см. текст поста и последние комментарии), но при этом делится своими заблуждениями с сообществом. Складывается ощущение, что капча - это такая 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.

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

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

Сначала . Извлекайте архив и помещайте его на Ваш сайт.

Теперь о том, как добавить капчу на форму , например, на форму регистрации:


Поля для регистрации...

Проверчный код


;


В результате, на форме регистрации Вы увидите проверочный код, который пользователь должен будет ввести. Теперь о том, как проверить правильность ввода. Для этого в файле "register.php " (или в другом файле, который указан в атрибуте "action ") пишем следующие строки:

Session_start();
if($_POST["kapcha"] != $_SESSION["rand_code"]) echo "Капча введена неверно";
else echo "Капча введена верно";

То есть считываем то, что ввёл пользователь ($_POST["kapcha"] ) и сравниваем с тем, что находится в сессии (данное значение было записано при генерации капчи ). Если значения не совпадают, то делаем вывод, что капча введена неправильно, иначе делаем вывод, что капча введена верно. То есть дальше Вы можете, основываясь на результат сравнения выполнить определённые действия. Например, зарегистрировать пользователя или отправить его вновь на форму регистрации, хотя, безусловно, это зависит от Вашей задачи.

(3)

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

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

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

Обратите внимание, что слово «капча» пошло от английской аббревиатуры CAPTCHA (Completely Automated Public Turing test to tell Computers and Humans Apart) – полностью автоматизированный публичный тест Тьюринга для различения компьютеров и людей. Эта эффективная программка-тест была придумана учеными из исследовательского центра Карнеги, расположенного в США, а именно в штате Пенсильвания.

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

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

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

Согласно данным системы Akismet, 90 процентов всех комментариев в Интернете являются спамом. Сам же спам нужен для:

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

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

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

Какие есть виды капчи?

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


Проверка от поисковой системы Google, самая простая и удобная. Для ее прохождения достаточно поставить галочку возле слов «Я не робот». Через мгновение отобразится зеленая галочка, а это значит, что проверка успешно пройдена.

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

Распознавание текста/цифр


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

Логические


В данной капче вам потребуется решить несложное арифметическое уравнение, например, написать в поле, сколько будет 21+42; или же разгадать простую загадку, указав правильный ответ.

Образные


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

Какую капчу выбрать для своего сайта?

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

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

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

  1. Тест должен решаться легко и быстро при любых обстоятельствах.
  2. Минимум ввода цифр/букв.
  3. Задание должно быть легкое даже для посетителей с проблемами функционирования сенсорных систем.

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

Однако самой популярной в наши дни остается стандартная текстовая reCAPTCHA от Google – она наиболее защищена от спамеров, которые постоянно придумывают новые способы обхода проверки. Данная программа постоянно меняет свой алгоритм действия, и теперь, в большинстве случаев, для прохождения теста достаточно поставить галочку – на это у вас уйдет всего 2-3 секунды, при этом нет нужды распознавать и вводить какие-то буквы/цифры/картинки.

Помимо reCAPTCHA, владельцы сайтов также часто используют следующие капчи:

  • yaCAPTCHA;
  • Solve Media;
  • Anti Spam Image;
  • SI Captcha Anti-Spam.

Как заработать на вводе CAPTCHA?

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

  • Рукапча. Автоматически распознает изображения. Сегодня многим владельцам веб-ресурсов требуется массовое введение капчи, поэтому вы можете предложить им свои услуги.
  • 2captcha. Англоязычный аналог вышеупомянутого сервиса.
  • Megatypers, Protypers. Американские ресурсы, позволяющие зарабатывать от 50 центов до 3 долларов США за 1000 вводов капч.

Заключение

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

  • Сергей Савенков

    какой то “куцый” обзор… как будто спешили куда то