Для чего была создана капча
История КАПЧИ
Те буквы и цифры на плохо различимой картинке, которые нужно вводить при регистрации или отправке сообщения – это и есть КАПЧА. Сейчас трудно представить, что передача данных на сайте может осуществляться без использования КАПЧИ, однако этому компьютерному тесту не так много лет – появился он лишь в 2000 году.
Да-да, каждый раз, вбивая символы в форму, вы проходите тест на определение робот вы или человек. Сам термин КАПЧА произошел от английской аббревиатуры CAPTCHA, которая расшифровывается как Completely Automatic Public Turing Test to tell Computers Humans Apart, что можно перевести на русский как «полностью автоматизированный публичный тест Тьюринга, призванный отличить компьютер от человека». В русский язык пришло лишь фонетическое название термина, которое никак не расшифровывается.
К 2000 году разработка методов противодействия спам-роботам стала особенно актуальной. Инженеры Университета Карнеги-Меллон, возглавляемые Льюисом Фон Аном, предложили свой вариант фильтрации автоматических роботов от живых людей: выводить на экран специально искаженные символы, которые мог прочитать человек, но не мог распознать ни один существовавший в то время спам-робот. Вводя данные символы в специальную форму, пользователь подтверждал, что он – человек.
«Капча» в разных вариациях
Долгое время система не претерпевала никаких изменений, но к 2009 году группа Льюиса Фон Ана решила усовершенствовать свою систему (точнее, подумала, что старания миллионов людей по вводу символов с картинки в форму не должны пропадать даром) и представила новую версию «капчи», назвав её «reCAPTCHA». Наверняка на просторах интернета вам встречалась подобная форма.
reCaptcha была представлена в 2009 году
Не возникало ли у вас впечатления, что слова, выдаваемые системой – какие-то отсканированные части книг, где часто попадаются запятые или иные знаки препинания, а иногда символы и вовсе затерты и непонятны? Так и есть на самом деле! Новая система дает пользователю два слова (системно искаженных, чтобы роботы не смогли их прочитать): одно из них — контрольное — уже распознано и известно (именно по нему осуществляется проверка), второе же берется из отсканированного фрагмента, который автоматическая система распознавания текста не смогла обработать. Интересно, что для прохождения теста пользователю достаточно ввести одно слово, второе же вводить не обязательно, но об этом нигде не сказано, и обычно интернет-пользователи его тоже вводят (тем более, в каком порядке расположены слова тоже неизвестно).
Иногда одно из слов невозможно расшифровать. Всему виной — первоисточник, откуда сканировался фрагмент
В случае, когда контрольное слово заполнено правильно, результат второго слова запоминается и отправляется специалистам по оцифровке материала, помогая им переводить книги/журналы/газеты в цифровой формат. А после того, как его одинаково распознали несколько десятков человек, используется для последующих распознаваний в качестве первого слова. Так, миллионы ничего не подозревающих пользователей ежедневно помогают проводить оцифровку старых книжных изданий.
Простая и удобная система быстро обрела популярность, но её создатели не учли одного: желания людей заработать легких денег. В интернете и по сей день существует сотни сайтов, которые предлагают заработать, просто вводя в форму «капчу», с которой роботы справиться не могут. Зачастую пользователи таких сайтов не знают, что каждая введенная ими «капча» – это очередное письмо со спамом, которое, быть может, придет и на его электронную почту.
Кроме того, не стоит на месте и искусственный интеллект: анализ, проведенный компанией Google в 2014 году, показал, что новейшие спам-роботы могут распознать символы «капчи» с точностью до 99,8% [источник], что практически сводит на нет её присутствие на веб-сайте.
Вскоре Google предложила свой вариант «капчи», назвав её «NO CAPTCHA reCAPTCHA». Ее основная идея заключается в том, чтобы снизить взаимодействие пользователя с системой до минимума: когда пользователь заходит на веб-сайт, срабатывает скрипт, анализирующий его поведение на странице. Дело в том, что даже самый современный робот по своему поведению отличается от поведения человека, и система от Google умеет их отличать. Получается, что пользователь проходит тест «человек-робот», просто находясь на сайте. Единственное, что требуется от пользователя – нажать на галочку «Я не робот».
Это интересно: система «NO CAPTCHA reCAPTCHA» установлена и на нашем сайте.
Конечно, система может ошибаться, и в случае, если живой человек ошибочно определен тестом в качестве робота, Google предлагает пройти ещё одну проверку: выбрать среди нескольких картинок те из них, где, например, показаны собаки.
На данный момент именно «NO CAPTCHA reCAPTCHA» считается передовой системой защиты от спама для массового бесплатного использования. Но «гонка вооружений» между спамерами и системами защиты продолжается, и нет сомнений, что через какое то время и «NO CAPTCHA reCAPTCHA» перестанет справляться со своими задачами.
Как это работает: CAPTCHA
Сколько лет существует Хабр — столько лет на нём регулярно появляются посты про очередную капчу — будь то скрипт генерации картинки, новая идея капчи с котиками и тому подобное. Самый свежий пример того, что человек не совсем понимает — как же всё таки должна работать капча (см. текст поста и последние комментарии), но при этом делится своими заблуждениями с сообществом. Складывается ощущение, что капча — это такая terra incognita для большинства разработчиков — как для тех, кто просто прикручивает её к очередной форме в надежде на то, что она будет работать «из коробки», так и для тех кто придумывает капчи вроде тех, на которых надо выбрать картинку с котиком из нескольких фото.
Статья содержит полезную информацию для тех, кто использует капчу на своём сервере, вместо того чтобы довериться стороннему сервису вроде reCaptcha.
Captcha
Согласно своему определению, captcha — это автоматизированный публичный тест Тьюринга (тест который может пройти человек, но не компьютер). В статье я буду рассматривать свойтсва капчи на примере самого распространненого её вида — текста на картинке, хотя почти все написанное одинаково применимо к любому виду капчи.
Два главных свойства капчи
Любая капча должна обладать двумя свойствами, без которых она не будет работать:
Устойчивость к распознаванию — свойство, защищающее капчу от распознавания алгоритмом — например системой распознавания текста. Гарантирует то, что человек сможет прочитать текст на картинке, а компьютер нет.
Антипример: стандартная капча форумов phpBB 2.x таким свойством не обладала — из-за относительной простоты распознавания появились скрипты, которые спамили все подряд форумы вынуждая веб-мастеров менять капчу на более стойкую.
Устойчивость к угадыванию — свойство капчи, не позволяющее угадать её значение за небольшое число попыток (менее 1000). Если набор возможных значений капчи невелик, программе не составит труда угадать её подбором вместо распознавания.
Антипример: арифметическая капча вроде «1+2» (перебор чисел от 1 до 20 в скором времени даст результат).
Антипример: выбрать из нескольких картинок ту, на которой изображён котик.
Проверка капчи
Значение для проверки должно храниться на сервере, а не передаваться вместе с картинкой в браузер. Для сопоставления посетителя и правильного значения капчи необходимо использовать некий ключ, который передаётся вместе с капчей (идентификатор сессии, номер капчи и т.п.)
Антипример: если передавать саму капчу и значение для ее проверки (в том числе зашифрованное), то человеку достаточно один раз распознать такую капчу и далее использовать комбинацию «ответ»-«значение для проверки» в своём скрипте (по ссылке в начале поста как раз такой случай)
После проверки, сохраненное значение капчи необходимо удалить. Если не сделать этого, злоумышленник сможет использовать данное значение снова неограниченное число раз. Да, при обновлении страницы с формой обновляется и капча (либо при генерации формы, либо при генерации картинки), вот только скрипт может не загружать форму снова (надо упомянуть, что это не актуально если на сайте используются одноразовые csrf-токены для форм).
Антипример: гипотетическая форма логина, в которой достаточно один раз ввести капчу правильно, и далее подбирать пароль скриптом, избегая перегенерации капчи на сервере.
Пуленепробиваемая капча
Защита от перебора. Если ваша капча устойчива к распознаванию, но не очень устойчива к перебору (например на ней надо прочитать всего 3-4 цифры), желательно ограничить число неправильных ответов «с одного ip» / «для одного логина» / etc. Такие ограничения необходимо проверять ДО проверки самой капчи (то есть даже в случае правильно введенной капчи, при наличии ограничения она не должна считаться пройденной) иначе оно не будет препятствовать перебору.
Защита от DoS. При генерации капчи на своем сервере, надо понимать что это удобный вектор проведения DoS атак (которую, в отличие от DDoS, может устроить любой школьник). Для защиты можно ограничить число генерации капчи для одного ip, кэшированием капч и т.д. Подробнее про это
Защита от распознавания. Если вы выбираете капчу, или вдруг собираетесь написать её сами, желательно понимать какая капча более защищена от распознавания. Существуют готовые универсальные скрипты распознавания капчи, работающие по принципу OCR, а в случае если ваш сайт заинтересует спамеров есть риск, что будут использовать / писать скрипт конкретно под вашу капчу. Последнее правда относится больше к сайтам уровня Яндекс или vk, а вот вариант с защитой от банальных OCR желательно предусмотреть.
Защита от антигейтов. Если говорить формально, то капча как тест Тьюринга не обязана защищать вас от антигейтов, так как в этом случае её будет распознавать человек. С практической же точки зрения, этот вопрос весьма актуален и защищаться как-то надо.
Тут нет и не может быть «золотого стандарта» (ибо в таком случае антигейты внедрят его поддержку), поэтому вы вольны дополнять капчу любыми ухищрениями, чтобы сделать её распознавание через антигейт невозможным. Например:
— нестандартная капча (сбор паззла, поворот изображения, клик по области на фото и т.п.);
— кириллическая капча — самое простое решение, но имеет ряд минусов: подходит только для проектов с русскоязычной аудиторией, есть антигейты с поддержкой кириллицы;
— использование виртуальной клавиатуры рядом с капчей для ввода нестандартных символов или фигур (может быть неудобно пользователям мобильных);
Юзабилити
Не просите ввести капчу, если вы уже убедились, что перед вами человек. Тут однако, надо быть осторожным, чтобы форму нельзя было использовать скриптом неограниченное число раз после однократного ввода капчи человеком.
Пример: форма регистрации. Если я где-то регистрируюсь, и забыл ввести поле «почтовый индекс», но правильно ввёл капчу — не надо показывать мне новую. Потратьте 10 минут на то, чтобы сохранить где-то у себя, что вот эту конкретную форму сейчас пытается заполнить живой человек.
Для облегчения распознавания человеком: не используйте в капче одновременно буквы и цифры, не используйте одновременно прописные и строчные буквы, исключите похожие символы.
Отказ от использования капчи
Лучшая капча — отсутствие капчи. Там где можно отказаться от её использования — это надо сделать. Возможно для этого придется реализовать дополнительные лимиты и проверки, но пользователи скажут вам спасибо.
Но тут надо быть очень осторожным. Например: форма регистрации без капчи, с полем email на который приходит письмо с активацией. Без дополнительных средств защиты такую форму могут завалить «левыми» адресами, и ваш сайт включат в черные списки почтовые службы. В таком случае можно обходиться без капчи, но только если у вас есть другой рубеж защиты, вроде лимита по ip.
Кому то информация в этом топике покажется очевидной, но если бы я не сталкивался с примерами непонимания этих простых принципов в жизни, в том числе у опытных коллег-разработчиков, я бы не стал тратить время на написание этого текста.
В поисках идеальной CAPTCHA
CAPTCHA, или Completely Automated Public Turing Tests to Tell Computers and Humans Apart (Полностью автоматический публичный тест Тьюринга для различения компьютеров и людей), была создана для того, что бы убедиться, что введенные данные не были сгенерированы компьютером. Эти своеобразные тесты обычно используются в Интернете для защиты форм регистрации и комментирования от спама. Если быть честным, я испытываю смешанные чувства насчет CAPTCHA. Она в большинстве случаев раздражает меня, но не смотря на это я использовал CAPTCHA в качестве защиты на некоторых сайтах.
В этой статье я хочу углубиться в поиск идеального решения проблемы растущего количества сгенерированного людьми спама. Мы взглянем на то, как и зачем используется CAPTCHA и ее влияние на юзабилити в поисках ответа на ключевые вопросы: что представляет из себя идеальная CAPTCHA и почему в качестве защиты предпочитают именно ее?
Стремление к человечности
Все это приводит к созданию прибыльных ситуаций для спамеров. Автоматизация процесса, очевидно, приводит к сверхчеловеческой скорости и эффективности.
Те, кто управляют сайтами, знают, что это достаточно распространенный бизнес и достаточно серьезная проблема. Akismet, популярная система по отлову спама (чаще всего встречается в виде плагина для WordPress), фиксирует более 18 миллионов спам-комментариев в день, в сумме эта система отловила 20 миллиардов комментариев за все ее историю. Система Mollom, которая создана с тем же предназначением, отлавливает более миллиона спам-комментариев в день, эта же система подсчитала, что более 90% комментариев – спам. Никакие просьбы остановиться не действуют на спамеров, но их жадность может сыграть нам на руку; использование автоматических систем для получения выгоды имеет некоторые слабости.
Знакомство с CAPTCHA
Автоматический спам постоянно беспокоит владельцев сайтов, поэтому CAPTCHA выглядит привлекательно как решение этой проблемы… до поры до времени. Время, необходимое для постоянного контроля пользовательского контента несопоставимо со временем, необходимым для введения CAPTCHA на сайте – именно это толкает разработчиков на использование CAPTCHA.
Не секрет то, что CAPTCHA используется практически везде. По статистике проекта reCAPTCHA более 200 миллионов сгенерированных reCAPTCHA проходят проверку ежедневно, в среднем пользователи затрачивают на ввод 10 секунд. Проект Drupal CAPTCHA сообщает о 100 тысячах использований в неделю, при том, что это лишь часть сайтов с этой защитой (речь идет лишь о тех, кто дал добро на отправку отчетов).
CAPTCHA решает проблему в лоб: ее предназначение заключается исключительно в остановке спамеров. Настоящие пользователи, в большинстве случаев, проверку проходят. То есть, в идеале, пользователей эта защита не затрагивает.
К сожалению, это не так. Проблема читаемости CAPTCHA не нова. Организация W3C опубликовала отчет в 2005 году на тему недоступности CAPTCHA, в котором было объявлено, что читаемость CAPTCHA человеком в некоторых системах может достигать лишь 90%. Немногим позже, в 2009 году, Кейси Генри обратил внимание на влияние CAPTCHA на переходы и предположил, что возможные потери клиентов составляют примерно 3%:
Учитывая тот факт, что множество людей рассматривают переходы, как источник доходов, потеря 3.2% клиентов может отразиться на продажах. Как по мне, так лучше вручную перебирать спам, чем терять часть прибыли.
— Кейси Генри, CAPTCHAs’ Effect on Conversion Rates
В 2010 году, команда Стэндфордского Университета опубликовала исследование, названное “Насколько хорошо люди справляются с CAPTCHA? Подробная оценка ситуации” (PDF), в котором была дана оценка CAPTCHA на крупнейших сайтах Интернета. Не стало сюрпризом то, что результаты оказались весьма неудовлетворительными, но больше всего поражает тот факт, что в среднем люди тратили 28.4 секунд на решение аудио-CAPTCHA. В исследовании так же уделялось внимание на проблемы людей, у которых английский язык не является родным.
Спам не является проблемой пользователей, это проблема людей, администрирующих сайт. Это очень высокомерно со стороны администраторов – сваливать такую проблему на плечи пользователей сайта.
— Тим Кадлек, Death To CAPTCHAs
Ввод CAPTCHA может казаться абсолютно тривиальной задачей, но исследования (как вышеупомянутый отчет от W3C) показывают, что подобное суждение имеет мало общего с реальным положением дел. И, как сказал Кадлек в своей статье, что же насчет пользователей с проблемным зрением, дислексией и другими заболеваниями, затрагивающими сенсорные функции? Для них это непреодолимое препятствие, это просто нечестно. Именно пользователи инвестируют и задают предназначение сайтам.
Вопрос в том, действительно ли CAPTCHA настолько неприемлема для пользователей, что от нее необходимо отказаться? Возможно, более важный вопрос: существует ли легко читаемая CAPTCHA, которую невозможно взломать? Если ответ отрицательный, то что же является подходящим решением для борьбы со спамом в сети?
Мир CAPTCHA
Одно из наиболее заметных превосходств человека над компьютером выражается в умении различать визуальные образы и модели. Наиболее популярные CAPTCHA отталкиваются именно от этого факта.
Веб-разработчики перелопатили множество вариантов: простые тесты по определению образов, интерактивные задания, игра в крестики-нолики и математические задачи, с которым пришлось бы изрядно побороться даже математикам. Мы же рассмотрим более адекватные идеи, которые внедряются в Интернете в наше время.
Определение текста
Наиболее популярным типом CAPTCHA на данный момент является определение текста, набора символов (ярким примером является проект reCAPTCHA).
Проект reCAPTCHA нацелен на остановку спама и помощь в оцифровке книг.
reCAPTCHA была создана в Университете Карнеги-Меллона, доме первопроходцев CAPTCHA и создателей термина (в 2000). Ныне под управлением корпорации Google, проект использует отсканированный текст, который системы оптического распознавания символов (OCR) понять не могут. Это, в теории, предоставляет не взламываемую CAPTCHA, у которой так же есть еще одна «фича» — помощь в оцифровке книг силами пользователей.
Пример текста, проблемного для OCR, именно такие «проблемные» тексты использует reCAPTCHA
Те, кто особенно озабочен проблемой юзабилити, всегда лестно отзывались о reCAPTCHA. К сожалению, в сети чаще всего встречаются абсолютно непонятные или нечитаемые CAPTCHA, предложение пользователям решить невыполнимую задачу не может хорошо отразиться на юзабилити.
Команда проекта reCAPTCHA делает большие усилия для обеспечения аудио-альтернатив для людей с нарушениями зрения, но множество других CAPTCHA этого типа не имеют подобных вспомогательных средств. Как было упомянуто в исследовании Стэндфордского Университета, выполнение аудио-CAPTCHA занимает много времени. В том же исследовании было обращено внимание на проблемы с выполнением CAPTCHA с английскими словами.
Другая попытка улучшить обыкновенную текстовую CAPTCHA представлена в конце 2010 года компанией Solve Media, чье решение заключалось в том, что бы заменить обычный текст рекламой и связанным с ней вопросом.
Solve Media утверждает, что их CAPTCHA может быть выполнена гораздо быстрее, чем любые другие. Не смотря на то, что большинство относится к подобной маркетинговой болтовне скептически, у данного проекта определенно есть потенциал, особенно учитывая то, что у многих мировых брендов название не зависит от локального языка.
Пока текстовая CAPTCHA имеет некоторые недостатки (к примеру, спамеры могут использовать специальное ПО для распознавания текста в изображении и таким образом преодолеть анти-спам защиту), она все таки бесспорно решаема. Этот факт – камень в огород тех, кто не признает подобную защиту.
Логические задачи
Некоторые люди предполагают, что необходимость дать ответ на простой логический вопрос может быть куда более эффективнее и удобнее, чем выполнение визуальных заданий. Идея заключается в том, что сложность согласованного текста вполне может быть достаточной для того, что бы отправить компьютеры в нокдаун.
IBM Watson недавно показал миру устрашающе похожую на человеческую возможность обрабатывать текст, и подобная технология может стать повсеместной быстрее, чем мы думаем. Но вместо тревог о том, что логические вопросы могут стать посильными для компьютеров, мы должны использовать эту технологию для анализа пользовательских данных и отделения человеческого контента от сгенерированного компьютером, который в большинстве случаев является спамом. Сервисы вроде SBlam! активно развивают эту идею.
Специфические вопросы о конкретном сайте, такие как «Как называется этот сайт?» и «Какой цвет доминирует на изображении выше?» могут быть лучше вопросов на общую тему. Но с другой стороны, конечно, количество таких вопросов в любом случае будет смотреться ничтожным рядом с 180 миллионами вопросов от TextCAPTCHA.
Наиболее заметная проблема логических вопросов заключается в том, что они не многоязычны, обычно используется английский язык. Создание базы с сотнями миллионов вопросов на всех языках мира – задача непосильная никому. Когда перспективы столь далеки от идеальных, всплывает вопрос: правильным ли решением является CAPTCHA?
Определение изображений
Много людей экспериментировали с изображениями вместо текста. Выгода? Нет проблем с разборчивостью. Сервисы вроде identiPIC предлагают пользователю определить объект на изображении. Корпорация Microsoft так же исследовала этот метод в своем проекте Asirra.
Тот факт, что мы не видим распространенности подобной CAPTCHA, означает, что этот метод не улучшает юзабилити. На самом деле, он ставит под угрозу доступность. Люди с проблемным зрением лишены всякого шанса пройти эту CAPTCHA, а добавление какого-либо текста или описания резко снизит эффективность теста.
В 2009 году Google опубликовал исследование (созданное под руководством Рича Госсвейлера, Марьяма Кемвара и Шумита Балуджа), в котором был обращен взгляд на альтернативные формы этого типа CAPTCHA. Проект предлагал пользователям поправить положения изображений, поворачивая их.
Инновационная идея, я уверен, вы согласитесь. Исследование показало превосходство этой техники над другими в плане легкости прохождения теста человеком. К сожалению, этот метод полностью провален в плане доступности (вспомните о людях с проблемным зрением).
Определение друзей
Мы покажем вам несколько фотографий ваших друзей и попросим вас назвать того, кто на них изображен. Хакеры на другой стороне планеты могут знать ваш пароль, но не могут знать ваших друзей.
— Алекс Райс, Facebook, A Continued Commitment to Security
Тест Facebook на определение друзей
То, что делает нововведение Facebook абсолютно отличным от остальных решений, так это то, что эта CAPTCHA отсеивает не только машин, но и вполне себе человечных злоумышленников.
У Facebook определенно есть перспектива внедрить эту CAPTCHA по всему Интернету. С базой в 600 миллионов пользователей и миллионами сайтов, в которые интегрированы модули Facebook, интернет-гигант может использовать метод определения друзей для аутентификации где угодно. Нельзя забывать и про то, что подобный метод куда легче, чем определение текста.
Есть только одна проблема. Действительно ли вы знаете, кто же ваши друзья? Не секрет, что зачастую запросы дружбы – предмет обмена между пользователями для повышение заветной циферки, отражающей количество друзей. Когда этот список полон абсолютно неизвестных вам персон – едва ли вы пройдете этот тест. Какой бы хорошей идея Facebook ни была, она все равно в конечном итоге обречена на провал, потому, что мы люди – мы нарушаем правила.
Интерактивные CAPTCHA
Существует метод, который привлек нешуточное внимание пользователей за то, что выполнить предлагаемую задачу могут только люди. They Make Apps представила CAPTCHA в виде маленького ползунка, который надо передвинуть в правую сторону для того, что бы подтвердить отправку данных. CAPTCHA сообщает пользователю: «Покажи свою человечность, переведи ползунок на конец линии для создания аккаунта.»
They Make Apps использует CAPTCHA в виде ползунка
Очевидно, этот вариант не подходит для людей с ограниченными способностями. Более того, разработка скрипта, который автоматически бы переводил ползунок для активации кнопки «Отправить» не должна быть сложной. Более продвинутая версия ползунка используется в комментариях в блоге Adafruit. Четыре разных ползунка должны быть установлены в правильное положение для публикации комментария.
CAPTCHA в блоге Adafruit
Более продвинутое решение?
Ни одно из приведенных выше решений не соответствует всем требованиям, которые мы выделили в качестве обязательных для идеальной CAPTCHA. Каждый из вариантов создает неприемлемые препятствия для крупного сегмента пользователей. Мы и пришли к выводу, что пользователи предпочитают классическую текстовую CAPTCHA, и никакую альтернативу они не воспримут как нечто лучшее. Несколько лишних секунд, требуемых от пользователя на решение предложенной задачи, сводит все преимущества метода на нет. Если метод слишком медленный, значит, он не стоит того.
Из всех доступных решений, текстовая CAPTCHA (вроде reCAPTCHA) выглядит наиболее привлекательно. Но вопрос все равно остался открытым: зачем мы просим пользователей выполнять задания? Разумеется, мы можем победить спамеров в их же игре используя автоматические системы, которые будут делать за нас всю работу. Итак, мы пришли к тому, что всегда есть определенная проблема, которую решает CAPTCHA.
Не смотря на превосходство компьютерного интеллекта, большинство механизмов, созданных для спама — тупые. Если отправка данных оканчивается провалом (из-за CAPTCHA или же по какой-либо другой причине), то спам-бот пойдет по своему списку сайтов дальше. Джеф Атвуд наглядно показал это в 2006 году в своей статье “Эффективность CAPTCHA”. Не смотря на исследования в области взлома CAPTCHA, большинство спамеров не желает инвестировать в эти исследования или вообще пользоваться средствами взлома. Приличное количество сайтов, доступных для атаки и скорость, с которой эта атака производится означают, что взлом CAPTCHA не входит в интересы большей части спамеров.
Корпорация BBC является одним из самых тщательных исследователей в этой области в Великобритании. Ее требования к доступности не имеют равных, и недавнее исследование систем CAPTCHA в плане доступности пришло к выразительному и минималистическому ответу: «Нет»:
Участники с проблемным зрением ожидали полной доступности от BBC, и мы почувствовали, что использование подобных систем защиты может подмочить нашу репутацию. Пользователи испытывали некоторые проблемы с искаженным текстом. Логические паззлы показались им слишком необычными. Аудио им тоже не понравилось. В общем, пользователи испытывали к CAPTCHA крайне негативные чувства.
— Рован Гайлс, BBC, CAPTCHA and BBC iD
Существуют альтернативные решения, которые помогают избежать автоматической отправки данных компьютерами без использования CAPTCHA, и что более важно, вообще без участия пользователя.
Альтернативы CAPTCHA
CAPTCHA, в ее наилучшем виде, может реализовать свой потенциал в другой области. В качестве защиты для сайтов, к сожалению, она не идеальна. Создавая трудности для пользователей, CAPTCHA порой и не справляется с поставленной задачей. Спамеры, работающие вручную находятся на пике своего успеха, и мы должны вводить более искусные, невидимые методы защиты.
Автоматическое и ручное определение спама
Мы упомянули несколько сервисов по определению спама в самом начале статьи. Akismet, Mollom и SBlam! анализируют полученные от пользователей данные и отмечают спам автоматически. Система Mollom иной раз предлагает ввести CAPTCHA, но только в том случае, если она не уверена. Но почему бы не разработать свою собственную систему, которая будет подогнана специально под нужды, требования и специфику определенного сайта?
Переложив на себя ответственность и снятие бремени с пользователей улучшит их мнение о сайте и увеличит их активность. Ручной контроль контента зачастую является жертвой, которую стоит принести.
Метод «Горшочек Меда»
В 2007 году, Фил Хаак преложил весьма умный метод определения ботов: использование горшочка с медом. Идея проста: форма на сайте содержит дополнительное поле, скрытое от пользователей. Спам-боты обрабатывают и взаимодействуют с исходным HTML-кодом, поэтому они не смогут определить, что поле скрыто. Если в это поле были введены данные, администратор сайта может быть абсолютно уверен, что это сделал не настоящий пользователь.
Метод «горшочек с медом» может быть более эффективным, если обфусцировать скрытие поля методами JavaScript или хэшированием данных. Эти методы не непробиваемы, но мы можем рассчитывать на лучшее.
JavaScript может быть использован для заполнения скрытых полей динамически, что может быть проверено скриптом на стороне сервера. Scratchmedia использует подобное решение наряду с CAPTCHA, если JavaScript отключен.
Можно так же использовать дополнительный таймстамп и данные сессии для определения автоматической отправки. Недавнее обсуждение на сайте Stack Overflow представляло из себя огромное количество примеров и идей насчет этого, включая Hashcash, который доступен в виде плагина для WordPress. Урок по созданию такой защиты средствами jQuery описывает похожий метод и включает в себя интересную мысль:
Воры знают, что если у дома есть внешнее освещение, собака во дворе или другие подобные средства защиты – то в этот дом лучше не соваться. Воры ищут большую выручку с минимальными затратами и риском.
— Джек Борн, Safer Contact Forms Without CAPTCHAs
Централизация базы пользователей
С постепенной «социализацией» Интернета, множество сайтов стали предлагать пользователям зарегистрироваться и взаимодействовать друг с другом. Публикация данных на сайт обычно проводится наряду с регистрацией полноценного аккаунта, или же анонимно. Оба этих метода являются открытыми воротами для спама. В 2008 году, Facebook анонсировал Facebook Connect, сервис, который предоставляет сайтам и их пользователям интегрированную платформу на базе социальной сети. Twitter подхватил эстафету в 2009 с похожим сервисом «Войти с помощью Twitter». Оба этих сервиса могут быть встроены на сайт весьма легко, с их помощью можно полностью избавиться от регистрации и форм для комментариев, которые являются целью ботов.
Эти сервисы стали настолько популярными, что появился Janrain.
Сервис Janrain предоставляет свое собственно решение, базированное на вышеупомянутых Facebook Connect, Sign in with Twitter и иже с ними, для того, что бы сделать сайт доступным из любой социальной сети.
Mahalo предоставляет возможность авторизоваться, используя любую социальную сеть с помощью Janrain
Другие сервисы типа Disqus, позволяют пользователям взаимодействовать с помощью встроенной системой защиты от спама и встроенной авторизацией.
Практически полное отсутствие анонимности заставляет пользователей подумать дважды перед отправкой какого-либо контента. Это так же очень эффективно предотвращает спам; стоит удалить одного пользователя Facebook и все сайты с подключенным Facebook Connect стали огорожены от очередного спамера.
Подобные сервисы, разумеется, провоцируют жаркие споры на тему приватности, защиты личных данных… но это уже тема для другой статьи. В качестве альтернативы CAPTCHA эти сервисы имеют огромный потенциал со своей доступностью и юзабилити.
Фиксирование времени, затраченного пользователем
Еще один довольно простой метод, который нисколько не раздражает пользователей, заключается в разделении ботов и пользователей путем измерения затраченного времени на заполнение формы. Вычислением среднего времени, затраченного на заполнение формы, можно разработать определенные правила. К примеру, если на заполнение формы ушло менее пяти секунд, что практически невозможно для человека, то пользователю будет предложено попробовать снова. Напомню: спамер предпочтет более легкие цели и оставить в покое сайт, где попытка использовать автоматическую систему провалилась.
Идеальная CAPTCHA
Судя по многолетнему опыту и исследованиям можно с уверенностью сказать, что CAPTCHA далека от идеала как решение проблемы. Уберем спамеров из уравнения и таким образом мы полностью избавимся от нужды в CAPTCHA; именно на это мы и должны ориентироваться. Идеальная CAPTCHA – отсутствующая CAPTCHA.
Восстание людей
CAPTCHA по своей природе выполняет всего одну функцию – отсеять людей от ботов, тем самым защищать сайт от спама. Но она не может справиться со своей задачей, если спамер не является ботом. Наилучшим решением будет полное избавление от всякой нужды в спаме. Если мы сможем изменить тенденции, превратив спам из крайне прибыльного в чисто убыточное занятие, то тогда он в любом проявлении сойдет на нет.
Одно из множества темных искусств в SEO – искусственная генерация ссылок на сайт под предлогом оптимизации. Поисковые системы считают входящие ссылки весомым показателем ценности. Очевидно, этим злоупотребляют, отправляя подобные ссылки на множестве сайтов (форумы и формы для отправки комментариев идеальны для реализации подобных методов). Польза от SEO настолько высока, что автоматический спам и рядом не стоял. Практика привлечения дешевого человеческого труда достаточно распространена. И CAPTCHA не предназначена для подобных вещей.
Мы должны признать необходимость в модерации и определения ботов в фоне, невидимыми методами. CAPTCHA – лучшее временное решение на данный момент и худшее в целом. Либо бороться со спамом вручную, либо просто забыть про интересы пользователей – выбор за вами.
Выводы
Если владельцы сайтов будут работать сообща для уничтожения спама, то тогда он с течением времени сойдет на нет, и в один прекрасный момент необходимость в CAPTCHA сама собой отпадет. Это слишком идеалистично? Возможно. В реальности, мы скорее увидим тесное сотрудничество технологии и закона для уничтожения спамеров как вида.
Абсолютно ясно, учитывая все «за» и «против» CAPTCHA, что будущее за незаметными для пользователя технологиями. На данный момент CAPTCHA должна быть самой крайней мерой.
Оригинал статьи: In Search Of The Perfect CAPTCHA, David Bushell, 03/04/2011.
Перевод довольно вольный, но суть и мысль, передаваемые автором, сохранены. Исключены несколько незначительных фрагментов, каждый с определенной причиной. Например, фрагмент с информацией об изменении алгоритмов Google был удален, так как ссылается на недоступную страницу в блоге Google (404).
Прошу не кидаться ничем нехорошим, мой первый перевод такого объема.
Этот текст распространяется на условиях лицензии «Creative Commons Attribution-NonCommercial-ShareAlike 3.0».
Вы можете копировать, редактировать и использовать не в коммерческих целях этот текст при обязательном указании авторства и сохранении оригинальной лицензии.