что такое валидация recaptcha на сайте гто
Что значит: «Вы не прошли валидацию reCaptcha»?
Валидация означает что вы всё сделали правильно(простым языком). То что Вы не прошли валидацию во время решения «капчи», означает что Вы неправильно решили задание предусмотренное в Captcha.
Во первых если войти в том же браузере где не хотите решать ReCaptcha от Google под своим аккаунтом в Google то показывать картинки будет меньше, автоматически иногда будет ставить галочку.
А во вторых есть сервисы для решения капч например Anti Captcha и RuCaptcha, и программы например XEvil и CapMonster, но они платные(есть демо версия XEvil бесплатная, но разгадывает слабее чем платная) и ещё придётся настраивать отправку капчи на решение в сервис или программу, а так же получение результата.
Эта проблема возникает наверное у всех, кто пользуется хромом от гугла. Наверняка могу сказать одно-на форуме гугл и хрома, они валят на сторонние сайты. И совершенно не дают вразумительного ответа. Пишут какую нибудь ерунду и приписывают: это моё личное мнение и не относится к компании гугл. На самом форуме рекапча тоже нет объяснений и говорят якобы сайты меняют наши ай-пи адреса и поэтоиу ответ приходит уже с другого. Всё конечно можно объяснить всякими причинами и особенно если человек не программист. На форумах гугловцам перемыли все кости и проклинают направо-налево. А те всё отнекиваются и не объясняют причин. А причина проста: каждый новый запрос-ответ является трафиком. А на нём как понятно и зарабатывают.
В общем на некоторое время помогут такие действия: заходить на сайты инкогнито, очищать кеш и куки, чистить историю. Сами понимаете, потом вновь мучения с паролями и т.д. Чтобы избежать этого, проделайте нижеследующее. В хроме зайдите в настройки и смените поисковую систему на яндекс(или ещё какую). Затем просто перед входом на сайты, выходите из аккаунта гугл. Влдадки, пороли и история будут на месте и рекапча работать с первого запроса.
Подключение Google reCAPTCHA на Vue и валидация ответа на сервере
В этой статье я покажу как подключить капчу от Google (reCAPTCHA) на Vue JS и валидировать ответ на сервере (я использую бекенд на Laravel/Lumen в качестве примера, но принцип валидации одинаковый для всех технологий).
Предисловие
Мы будем использовать Invisible reCAPTCHA.
Это невидимая* капча, которую не нужно проходить до тех пор, пока система не посчитает это нужным. Администратор сайта может установить пороговый уровень (Security Preference), при котором система будет требовать от пользователя пройти дополнительную проверку.
*- значок reCAPTCHA все же должен присутствовать на странице.
Невидимая капча на сайте.
Вопрос / Ответ
Перед началом работы я хотел бы ответить на вопросы, которые возникли у меня, когда я начинал работу с Google reCAPTCHA.
В: Сколько стоит использование reCAPTCHA?
О: ReCAPTCHA от Google — это бесплатный инструмент.
В: Зачем нужно еще раз проверять ответ пользователя на бекенде, если он уже прошел капчу на сайте?
О: Когда вы делаете запрос на сервер, вы отправляете что-то наподобие этого:
Если не проверять токен капчи на бекенде, боты могут просто спамить запросами БЕЗ этого токена или подменять его на фиктивный.
В: У меня реакт, что мне делать?
О: React JS — отличная вещь. Если вы используете его для разработки сайтов, советую обратить внимание на https://github.com/appleboy/react-recaptcha. Принцип работы очень похож на пример с Vue.
Приступаем к работе
Итак, прежде чем начать готовить, нам нужен список ингредиентов:
Шаг №1: Получаем ключи для использования reCAPTCHA на своем сайте
В поле label можете писать что угодно.
Далее выберите тип — Invisible reCAPTCHA badge.
Вы можете указать несколько доменов, на которых будете использовать капчу.
В качестве примера я указал yourawesomedomain.com и localhost.
Принимаем условия использования и двигаемся дальше.
Вам выдали два ключа, сохраните их в надежном месте. Мы вернемся к ним позже.
Шаг №2: Фронтенд. Установка и подключение капчи к нашим формам
Для начала, нам нужно добавить этот код в секцию head:
Свойство onload сообщит нашему компоненту, что капча готова к использованию.
Дальше я покажу готовый компонент и мы разберем его по частям:
Начнем с того, что мы имортировали Vue-Recaptcha в наш компонент:
Дальше мы обьявили свойство sitekey в data() компонента:
Добавляем компонент Vue-Recaptcha в нашу форму:
Метод register будет вызван при успешном прохождении капчи, в то время как expired вызывается при истечении срока действия капчи.
Метод onCaptchaExpired перезапускает капчу:
Самой форме мы добавляем событие @submit.prevent=»validate», которое запускает метод validate при отправке формы.
Процес можно описать так:
В методе register мы получаем recaptchaToken, который мы должны отправить на сервер вместе с данными, которые ввел пользователь:
На этом наша работа с фронтендом закончена. ReCAPTCHA успешно установлена и работает.
P.S. Если вы собираетесь использовать капчу в нескольких компонентах, лучше всего вынести sitekey в .env файл и получать его с помощью process.env:
Шаг №3: Валидация на бекенде. Пример валидации на Laravel и Lumen
Сделать валидацию ответа на сервере очень просто. Начнем с примера на Laravel.
1) В папке config создайте файл recaptcha.php с таким содержимым:
2) После этого, добавьте переменные в .env файл:
3) Установите GuzzleHttp, чтобы иметь возможность отправлять запросы на API гугла:
4) В контроллере добавьте метод checkRecaptcha:
В этом методе мы отправляем наш токен (который мы получили с фронтенда) методом POST на https://www.google.com/recaptcha/api/siteverify
5) В методе register (в вашем случае название может отличатся, это метод на который вы отправляли POST запрос с фронтенда) добавьте следующий код:
Все готово к использованию!
Путешествие токена. Визуальное представление.
Полный код контроллера будет выглядеть так:
Валидация ответа на Lumen
На Lumen все делаем так же, как в примере с Laravel, за исключением того, что нам нужно зарегистрировать наш конфиг (recaptcha.php) в bootstrap/app.php:
Заключение
Итак, в этой статье вы научились использовать Google reCAPTCHA в своем проекте на Vue.
ReCAPTCHA — отличный бесплатный инструмент для защиты своего ресурса от ботов.
С невидимой капчой можно проверять посетителей, не требуя от них никаких действий.
Что такое Captcha, ReCaptcha и зачем она нужна. Как обойти, как установить на сайт, почему за ввод капчи платят и сколько можно заработать
Наверняка каждый сталкивался с тем, что на сайте необходимо ввести проверочный код, чтобы доказать, что пользователь является человеком. Теоретически, это помогает сайтам избежать мошенников, и носит только характер безопасности. Однако как дела обстоят на самом деле, разберемся в этой статье.
Что такое Captcha (Капча), ReCaptcha и зачем она нужна
Официальное определение капчи – случайный набор чисел, букв, комбинации из чисел и букв, которая искажена различными способами. Таким образом, достигается обеспечение безопасности сайта, защиты его от мошенников. Предполагается, что человек может ввести проверочный код достаточно легко. Однако для роботов малейшие искажения уже сделают ввод текста практически невозможным, из-за невозможности распознать текст на картинке.
Капча позволяет определить, кем является пользователь, человеком или компьютером.
История создания и кто создал
Впервые капча как явление, которое известно нам сейчас, появилось в 2000 году, имея первоначальное название тест Тьюринга. Этот тест был разработан в университете Карнеги-Меллона, подразумевался как мера безопасности для онлайн-ресурсов. На тот момент это было инновационное решение, так как одновременно являлось крайне простым для человека, и фактически невыполнимым для робота.
Виды капчи
Капча классифицируется на несколько видов исходя из своей сложности. Разберем подробней каждый вид и его особенности.
Графический вид
Он представляет собой картинку с последовательностью искаженных символов, среди которых могут так же встречаться спецсимволы, буквы и цифры.
Искажение может быть разнообразным, начиная от наклона картинки, заканчивая множеством линий, наложенных на текст.
Логический вид
Ее цель проверить наличие логики у пользователя, результаты позволяют определить, тест проходит человек или компьютер.
Этот вид представлен разнообразием математических легких примеров, но в некоторых случаях это могут быть весьма сложные примеры (специализированные сайты). Так же к этому виду относится последовательный выбор одинаковых по смыслу картинок, выбор одной конкретной картинки.
Поведенческий вид
Как правило, это обычная галочка, которую очень легко поставить. Так же встречаются более интересные варианты, в виде поворота картинки в нужное положение.
Звуковой вид
Данный вид это по сути все выше перечисленные виды капч, но если нажать на капче иконку “наушники или колонку звука” робот проговорит капчу которую нужно ввести. Это полезно для тех, кто плохо видит или не видит вообще.
Капча как ее обойти
Не бывает решения, которое смогло бы обеспечить 100% безопасность в долгосрочной перспективе. Что касается именно капчи, зачастую владельцы сайтов сами оставляют уязвимости на видном месте, которыми потом пользуются злоумышленники. К примеру, на некоторых ресурсах достаточно лишь просмотреть код страницы, чтобы обнаружить проверочный код и ввести его. Это запросто сможет сделать автоматизированная программа и попасть на сайт.
В некоторых случаях, владельцы используют общедоступную базу картинок, которую может скачать любой желающий. Злоумышленник просто использует метод подбора посредством бота, который будет подбирать код до тех пор, пока его попытки не увенчаются успехом.
Как установить капчу от Google на сайт
Весь код будет выглядеть вот так:
Один из кусочка кода, HTML форма с двумя полями в одно из которых будет использовано для капчи. Этому полю будет задан индификатор – “g-recaptcha-response“. Информация из формы будет отправляться через метод POST, обработка будет проводиться в этом же файле, исходя из чего в атрибуте action нужно поставить значение /.
Для установки капчи на сайт от Гугл нужно иметь или зарегистрировать почту gmail. Сама установка капчи на сайт не содержит сложностей и займет максимум 15 минут. Для того чтобы это сделать, необходимо зайти на официальный сайт с продуктом reCAPTCHA от Google. На сайте нужно войти в “Консоль администратора“:
Далее нужно заполнить поля:
Внимание! Локальный сервер может некорректно работать с Google reCaptcha. Возможна проблема с аутентификацией пользователей.
Далее нужно “Скопировать ключ сайта” и “Скопировать секретный ключ“. Скопировав вставьте по очереди в код, который ниже. Для просмотра статистики нужно нажать на кнопку “Перейти в Google Аналитику“:
Скопировав первый и второй ключи, нужно вставить вот так в этот код:
Этот код для упрощения работы с кодами. Заменяя в коде ключи на свои, вставляйте так, чтобы кавычки ( ‘ ) в начале и в конце не удалить! Копируем код с уже замененными на свои ключи и открываем код сайта на котором нужно установить капчу и вставляем этот код в код сайта в первую строку:
Этот JavaScript код, который подключает reCAPTCHA и в нем заменены некоторые значения. Так как ключи от Google были прописаны в самом начале, то в коде нужно прописывать значение из константы где находятся ключи. Вот эти значения и замены и добавлен console.log(token), чтобы увидеть токен в консоли, который будет передаваться в качестве значения для поля – g-recaptcha-response:
В самом начале в две созданные константы были внесены ключи и одна из констант была прописана в коде JavaScript.
Далее сделали, что проверка будет отправляться через POST и что данные из формы будут записаны. Теперь остался по сути последний шаг PHP код, в котором нужно прописать действие, которое будет давать запрос в Google и от которого будут приходить данные о этом запросе. Это действие нужно прописать в переменную. Опираясь на показатели Гугл, то данные которые приходят score ниже 0.5 – это значит бот, а если выше, то человек:
Теперь можно “Перейти Google Аналитику” и смотреть статистику:
На этом интеграция капчи Google на сайт завершена.
Заработок на капчах, почему за ввод капчи платят и сколько можно заработать
С тех пор, как появилась сама капча, появился ряд ресурсов, которые платят пользователям за то, что они вводят капчу. Интересы у этих ресурсов самые разнообразные, они не разглашаются пользователю, который вводит капчу. Оплата такого труда крайне низкая, не стоит рассчитывать заработать хоть минимальную по средним меркам сумму. В целом, за 1000 сессий пользователь может получить максимум 70 рублей. Стоит понимать, чтобы ввести столько раз капчу, необходимо потратить 3-4 часа.
Помимо корыстных целей подобных ресурсов, есть и благородные. Очень многие занимаются оцифровкой старой литературы, а некоторые фрагменты невозможно оцифровать, в силу их испорченности. Эти фрагменты сканируются, и используются как капча, которую вводят пользователи. После того, как один фрагмент несколько пользователей ввели идентично, он считается оцифрованным.
Благодаря им в интернете все больше старой литературы, к которой имеет доступ большое количество пользователей. Это является определенным вкладом в развитие общества, в той или иной сфере.
Сервисы по заработку на капче
Существует большое количество различных сервисов, но мы рассмотрим два наиболее выдающихся.
2Captcha
Сервис предлагает работу буквально круглые сутки. Минимальная цена за 1000 вводов составляет 60 рублей. При этом минимальная цена вывода заработанных средств – 30 рублей. Стоит отметить, что вывод осуществляется фактически мгновенно, любым удобным для пользователя способом.
Kolotibablo
Фактически аналогичный ресурс, за тем исключением, что примерная стоимость 1000 сессий составляет 40 рублей. При этом минимальная сумма на вывод составляет 20 рублей. Преимуществом является то, что вывод возможен фактически любым способом, в том числе посредством вывода на кошелек криптовалютой.
В зависимости от количества работы, курса доллара и количества активных пользователей, стоимость может варьироваться.
RuCaptcha
Мало чем отличающийся ресурс от предыдущих вариантов. Отличие состоит в том, что здесь работы гораздо больше, так как для заказчиков предусмотрены более выгодные условия. Для исполнителей цена за 1000 сессий точно такая же, как и на других ресурсах – 30 рублей. Вывод предусмотрен в любой день недели, любым удобным способом.
Плюсы и минусы капчи
В заключение можно подвести итог и сказать, что капча весьма нужная и полезная штука. Практически все крупные сайты ее используют. А Вы используете капчу на своем сайте?
Маркетолог, вебмастер, блогер с 2011 года. Люблю WordPress, Email маркетинг, Camtasia Studio, партнерские программы)) Создаю сайты и лендинги под ключ НЕДОРОГО. Обучаю созданию и продвижению (SEO) сайтов в поисковых системах.
Ошибка ReCAPTCHA: как избежать этой проблемы при просмотре
Что такое reCAPTCHA
Во многих случаях при доступе к веб-странице появляется сообщение убедитесь, что мы настоящий пользователь а не бот. Это позволяет предлагать правильные услуги без ущерба для самого веб-сайта или любого пользователя.
Использование пользователями очень простое. Интернет-пользователь входит на страницу, и появляется поле, в котором он должен отметить, что он не бот, и тем самым подтвердить, что он человек. Это похоже на другие варианты, которые мы видим, в которых вы должны отметить серию цифр, изображений и т. Д. Однако в этом случае процесс выполняется быстрее и проще.
Однако бывают случаи, когда появляется ошибка и reCAPTCHA не работает в Chrome или любом браузере. Появится сообщение о том, что проверка не удалась. Это помешает нам открыть веб-сайт или войти в систему.
Почему в браузере не работает reCAPTCHA
Важно знать основные причины, по которым reCAPTCHA вылетает в браузере. Нет конкретной причины, но есть ряд возможностей, которые необходимо принять во внимание, а затем решить эту проблему для правильной навигации.
Мы просматриваем через VPN или прокси
Иметь VPN или просматривая полномочие очень распространено. В нашем распоряжении много таких услуг. Они позволяют нам избегать возможных географических блоков, которые могут существовать, а также сохранять личную информацию, если мы подключаемся из общедоступной сети.
Однако это может быть причиной того, что reCAPTCHA не работает в браузере. Это может привести к конфликту с сетью и лишить нас возможности проверить, действительно ли мы являемся законным пользователем, а не ботом.
Браузер устарел
Эта ошибка возникает в браузере, поэтому одна из причин, которая также может вызывать эту проблему, заключается в том, что он не обновлен. Имея устаревшее программное обеспечение может быть источником множества ошибок при подключении к сети и использовании наших устройств.
Вредоносное ПО в системе
Мы уже знаем, что хакеры используют множество стратегий, чтобы подвергнуть риску наши компьютеры. Многие атаки могут повлиять на правильное функционирование браузера и привести к сбоям, подобным тому, что мы описываем в этой статье.
Мы подключены с подозрительного IP
В таких случаях это очень частая причина. Веб-сайт интерпретирует, что мы подключены к подозрительный IP и считает, что мы можем быть ботом. Это может произойти, если мы просматриваем общедоступный Wi-Fi, например, где внутри много пользователей. Также в случае доступа к сети из VPN.
Что делать для устранения неполадок с reCAPTCHA
Мы увидели, каковы основные причины появления ошибки reCAPTCHA в браузере. Теперь мы собираемся объяснить некоторые проблемы, которые необходимо принять во внимание, чтобы это не превратилось в проблему и чтобы иметь возможность нормально перемещаться.
Держите оборудование в безопасности
Конечно, один из самых важных вопросов избежать сбоя reCAPTCHA и другие подобные сообщения, которые могут появиться в браузере, предназначены для обеспечения безопасности компьютера. Для этого мы можем использовать множество инструментов, доступных для всех типов операционных систем.
Мы можем использовать антивирус, а также брандмауэр и даже расширения для браузера. Все это поможет нам избежать проникновения вредоносных программ, которые могут повлиять на нас. Мы должны поддерживать безопасность на всех уровнях и, таким образом, уменьшать проблемы.
Обновите систему и браузер
Это означает, что у нас всегда должны быть все патчи и обновления которые доступны. Но особенно вы должны принять во внимание важность наличия последней версии браузера, чтобы предотвратить его устаревание и появление ошибок такого типа.
Контроль использования VPN и прокси
Если мы собираемся перемещаться через VPN или прокси и замечаем, что это может создавать проблемы такого типа, мы должны контролировать использование. Мы можем взглянуть на конфигурацию, посмотреть, может ли это быть ошибка с сервера мы подключены и в конечном итоге пытаемся использовать другой сервис.
Перезагрузите IP
Перезагрузите роутер
Таким образом, это некоторые из основных проблем, которые мы должны учитывать, чтобы избежать проблемы reCAPTCHA в браузере. Мы рассмотрели основные причины возникновения подобных сбоев, а также несколько основных советов по их устранению.
Решение главных проблем CAPTCHA
Как часто вы сталкиваетесь с тем, что не можете ввести предлагаемую капчу с первого раза? Теперь подумайте, какие трудности могут возникнуть у современного человека, который разговаривает с компьютером «на Вы»? Для него преграда в виде reCAPTCHA становится сильнее, чем для робота.
Однако трудность распознавания капчи человеком является вовсе не самой острой проблемой, как может показаться на первый взгляд. Можно было бы конечно закрыть на это глаза, если бы капча действительно защищала нас от различных автоматизированных систем распознавания. Но это далеко не так!
И я хочу рассказать о средстве, которое решает эти проблемы.
Для того, чтобы создать адекватную защиту для CAPTCHA, необходимо сначала классифицировать способы ее распознавания.
Автоматизированное распознавание капчи
В настоящее время существуют три основных способа автоматизированного распознавания капчи:
1. Использование ошибок в алгоритме защиты
Такой подход направлен на поиск логических ошибок (уязвимостей), позволяющих корректно отправлять форму, без распознавания самой капчи.
Это самый простой способ обхода защиты, но его можно применить в основном, только в простеньких самодельных решениях.
Наиболее популярной ошибкой является передача проверочного кода капчи через поля формы или cookie в открытом виде, в base64, или в md5-хеше без применения соли.
Атакующему не составит труда его получить, даже если ему придется сгенерировать rainbow-таблицу в соответствии с алфавитом капчи (только 5-тизначные буквы русского языка или только 6-тизначные цифры и т.п.) и сделать сопоставление.
Ошибкой так же считается, когда одна и та же капча может быть разгадана более одного раза. Это касается в основном случаев, в которых сгенерированный иднетификатор капчи действителен в течении 5-10 минут, но ограничений на количество проверок у него нет. Тем самым давая возможность атакующему, который уже знает ответ, многократно использовать идентификатор разгаданной капчи. Можно использовать брутфорс с одним и тем же идентификатором капчи, что, в конечном итоге, приведет к желаемому результату.
2. Автоматическое распознавание
Есть три основных пути успешного автоматического распознавания капчи:
I. Использовать готовые средства оптического распознавания (OCR)
Это самый простой подход, не требующий специальных навыков программирования. Такие программы в основном распространяются бесплатно, и их существует достаточно много: ocropus, cuneiform, tesseract, gocr, orcad и другие.
Атакующему нужно только передать картинку капчи такой программе, где на выходе он получит уже распознанный текст. Обычно такие программные продукты имеют множество тонких настроек, позволяющих сделать распознавание более эффективным.
Именно для предотвращения распознавания подобным образом, применяют различные искажения, скручивания, добавление мусора и т.п.
В данном случае процент распознавания может быть совсем небольшим (всего около 10%), но атакующий все равно добьется успеха.
II. Самописные скрипты с применением библиотек GD, ImageMagick и других
Такие скрипты позволяют очистить картинку от мусора, убрать фон, выровнить текст по вертикали, обрезать картинку, оставив только текст, убрать многоцветность, сделать усреднение цвета и т.д. На практике же полноценное распознавание такими скриптами весьма затруднено.
Гораздо более эффективно можно использовать такой скрипт только для предварительной очистки картинки, оставив сам процесс разбора другим способам.
III. Нейронные сети
Наибольший интерес сейчас представляют именно нейронные сети. Для многих это до сих пор похоже на некую магию.
Нейронные сети стали применяться атакующими, с целью автоматического распознавания любых капч.
Они обучают нейронную сеть, которая способна с высокой степенью вероятности распознать даже самую сложную reCAPTCH’у.
Существует множество различных библиотек для разных языков программирования, которые распространяются бесплатно. Одна из таких библиотек, Fast Artificial Neural Network, ранее освещалась в журнале Харкер.
3. Полуавтоматическое распознавание с привлечением дешевых человеческих ресурсов
Есть множество сайтов, таких как antigate.com, rucaptcha.com, captchabot.com и т.д., которые предоставляют своим клиентам выгодную услугу. Они принимают от клиента, в автоматическом режиме, картинку с капчей, и через несколько (10-30) секунд выдают правильный, по их мнению, ответ. Процент удачного распознавания в таком случае очень высокий, порядка 90-95%.
Стоит отметить, что у неподготовленного посетителя этот процент намного ниже.
Конечно, первое, что приходит на ум создателям капчи, это ввести русский алфавит и полностью исключить английский.
Некоторые удаляют даже цифры. Но как вы понимаете, эти полумеры не способны дать адекватную защиту и уже в ближайшее время владельцы сервисов перенаправляют трафик с таких капч уже только тем, кто умеет читать по-русски.
Другие же стараются усложнить сами капчи, накладывают различные фильтры, искажения, мусор и т.д., думая, что их распознает робот.
Тем самым они усложняют прочтение и распознавание не только людям занятым в этих сервисах и всевозможным скриптам, но и обычным пользователям, чья подготовка оказывается в разы ниже. Все это начинает напоминать современную медицину, которая борется не с причинами заболеваний, а лишь с их симптомами, в результате чего страдает только пациент.
Основными потребителями таких услуг, в основном, являются крупные SEO-компании, и различного рода информационные агрегаторы, которые в автоматическом режиме получают информацию о статистике по поиску ключевых слов, о позициях в поисковой выдаче, саму поисковую выдачу и т.д. Так же их услугами пользуются всевозможные спаммеры, рассылающие сообщения в социальных сетях, регистрирующие в автоматическом режиме учетные записи в почтовых сервисах, форумах и т.п.
По моему мнению, количество распознаваний капч для целей спама, хоть и носит негативный характер, все же является не основным направлением сбыта такой услуги, являясь всего лишь вершиной айсберга. В то время, как сам айсберг, это — ни что иное, как предоставление доступа к консолидированной информации.
Вот вам пример. В нашей стране информацию по почтовым отправлениям (трекингу), находящимся на территории РФ, можно получить только на государственном сайте Почта России. Год назад они добавили капчу в форму отслеживания отправления, что сделало невозможным получение информации по интересующим отправлениям в автоматическом режиме.
А теперь подумайте, откуда берется на этих сайтах информация по отправлениям, но уже без капчи?
Противостоять таким сервисам очень не просто. Этому способствует несколько факторов:
Все без исключения владельцы сервисов перенесли ответственность за загрузку самих картинок на своих клиентов, что, в конечном итоге, не позволят вычислять ip-адреса, их собственные или людей, которые занимаются самим распознаванием, для последующей блокировки.
Если клиент такого сервиса обладает необходимыми знаниями, то он без труда подключит базу прокси-серверов, для обхода возможных блокировок.
Стоит так же отметить, что не было ни одного сервиса, включая reCAPTCHA, способного эффективно противостоять этому.
Простота распознавания пользователем
Лучшим решением для пользователя будет обычный текст на картинке, добившись того, чтобы использование автоматических способов распознавания существенно усложнилось.
На помощь приходит свойство прозрачности форматов изображений gif или png. Нужно сделать так, чтобы при наложении нескольких частей картинки друг на друга, пользователь мог видеть неискаженный текст. Абсолютно любые браузеры поддерживают эту функцию, и даже IE6.
Теперь немного усложним. Для начала создадим несколько прозрачных изображений, по размерам, сходным с оригиналом, и раскидаем попиксельно все исходное изображение на эти, заранее подготовленные слои. При просмотре каждого отдельного слоя невозможно будет точно сказать, что именно изображено на картинке-оригинале. Автоматически собрать воедино такое решение все еще так же легко.
Продолжим усложнять, и сделаем наши слои случайных размеров и из случайных мест исходного изображения.
Теперь вынесем всю информацию о слоях в отдельный css-файл стилей, который будет описывать положение каждого слоя относительно левого верхнего угла исходного изображения. Однако, нам потребуется как-то идентифицировать слои и отличать их друг от друга. Для этого присвоим всем картинкам случайные идентификаторы, и опишем их.
Пример сформированной html-страницы:
Пример css-файла /captcha/954f836a78de1d510d28ce70fa7b6a4a.css:
В дальнейшем этот процесс можно усложнять до бесконечности — на одних слоях рисовать лишние пиксели, на последующих слоях их закрашивать и т.д.
Не правда ли, все гениальное – просто?!
Защита от автоматизированного распознавания
Большой ошибкой, по моему мнению, является блокирование ip-адресов, которые многократно вводили значения капчей неверно.
Кто угодно может вводить сколько угодно раз неверные значения, и это ни на что не влияет. Капча как раз и рассчитана на такую фильтрацию.
Нужно блокировать только тех, кто уже указал X правильных значений. И разблокировать, если в течении N минут этот пользователь больше не вводил правильных значений.
Иными словами, ip-адрес посетителя сайта, который был замечен за правильным вводом Х капч за последние N минут, автоматически должен получить отказ.
Стоит так же отметить, что такой подход начинает эффективно работать в случае единого, централизованного сервиса.
Идеальным решением является такое, в котором подобные ограничения не являются обязательными, и имеется возможность изменения этих параметров под свои требования.
Кто-то из вас захочет сделать ограничения в 1 капчу раз в 30 минут, кто-то захочет 5 капч в течение 5 часов, а кто-то и вовсе предпочтет отключить проверку.
В случае использования такого ограничения, становится абсолютно не важно, каким способом происходит автоматизированное распознавание капчи.
Любое из них перестает быть эффективным решением.
Вы наверняка спросите: Что мешает использовать огромное множество прокси-серверов?
Прокси-сервера все берут из свободного доступа, с одинаковых сайтов по всему миру. Последний раз, когда мне приходилось ими пользоваться, реально работающими были около 20000 серверов, где 3000 из них работали постоянно.
Процесс поиска/создания собственных прокси-серверов для большинства затруднителен. В этот список попадают те сервера, которые были взломаны брутфорсом, заражены вирусами и т.д. Это специфическая ниша, реально доступная лишь немногим.
Если бы только один атакующий эксклюзивно владел бы такой базой в 20000 ip-адресов, он бы мог претендовать на распознавание 40000 капчей в течение каждого часа.
Это 960000 капчей в сутки – отличный результат!
А теперь представьте, что все атакующие полностью или частично владеют этой базой. Децентрализованное ее использование приведет к перманентному отказу в обслуживание по всем из них.
Рассмотрим пример. Вы только что использовали один ip-адрес для успешного распознавания капчи любым способом, и теперь ждете около полу часа, чтобы не попасть под блокировку, для совершения повторной попытки. Но оказывается, пока вы ждали, кто-то еще использовал этот адрес для ввода капчи на другом интересующем его ресурсе.
Такая попытка обернется ему отказом, так как этот ip-адрес был уже задействован вами несколькими минутами ранее. Вы, дождавшись, когда истечет время, распознаете капчу второй раз, но получаете отказ.
И так все начинает идти по кругу и до бесконечности.
Protection Privacy as a Service
До этого момента это была лишь теория. Но вы можете посмотреть на то, как это работает на практике – http://ppaas.org.
Сервис позволяет защищать любую текстовую информацию, такую как адреса email, телефонные номера и т.п.
UPD: Пожалуйста читайте пост внимательно, графическое исполнение, это просто для удобства прочтения, основная защита от автоматизированного распознавания заключается в другом.
Спасибо за внимание. Вместе мы сделаем этот мир лучше.