Сколько лет существует Хабр — столько лет на нём регулярно появляются посты про очередную капчу — будь то скрипт генерации картинки, новая идея капчи с котиками и тому подобное. Самый свежий пример того, что человек не совсем понимает — как же всё таки должна работать капча (см. текст поста и последние комментарии), но при этом делится своими заблуждениями с сообществом. Складывается ощущение, что капча — это такая terra incognita для большинства разработчиков — как для тех, кто просто прикручивает её к очередной форме в надежде на то, что она будет работать «из коробки», так и для тех кто придумывает капчи вроде тех, на которых надо выбрать картинку с котиком из нескольких фото.
Статья содержит полезную информацию для тех, кто использует капчу на своём сервере, вместо того чтобы довериться стороннему сервису вроде reCaptcha.
А для затравки — если вы считаете, что такая проверка капчи будет работать:
if($_POST[‘captcha’] == $_SESSION[‘captcha’]) return true; (пример из практики)
Как ЗАЩИТИТЬ свой сервер от БОТ АТАК? (Velocity) | ApexNodes
то вы глубоко заблуждаетесь.
Captcha
Согласно своему определению, captcha — это автоматизированный публичный тест Тьюринга (тест который может пройти человек, но не компьютер). В статье я буду рассматривать свойтсва капчи на примере самого распространненого её вида — текста на картинке, хотя почти все написанное одинаково применимо к любому виду капчи.
Два главных свойства капчи
Любая капча должна обладать двумя свойствами, без которых она не будет работать:
Устойчивость к распознаванию — свойство, защищающее капчу от распознавания алгоритмом — например системой распознавания текста. Гарантирует то, что человек сможет прочитать текст на картинке, а компьютер нет.
Антипример: стандартная капча форумов phpBB 2.x таким свойством не обладала — из-за относительной простоты распознавания появились скрипты, которые спамили все подряд форумы вынуждая веб-мастеров менять капчу на более стойкую.
Устойчивость к угадыванию — свойство капчи, не позволяющее угадать её значение за небольшое число попыток (менее 1000). Если набор возможных значений капчи невелик, программе не составит труда угадать её подбором вместо распознавания.
Антипример: арифметическая капча вроде «1+2» (перебор чисел от 1 до 20 в скором времени даст результат).
Антипример: выбрать из нескольких картинок ту, на которой изображён котик.
Проверка капчи
Значение для проверки должно храниться на сервере, а не передаваться вместе с картинкой в браузер. Для сопоставления посетителя и правильного значения капчи необходимо использовать некий ключ, который передаётся вместе с капчей (идентификатор сессии, номер капчи и т.п.)
Антипример: если передавать саму капчу и значение для ее проверки (в том числе зашифрованное), то человеку достаточно один раз распознать такую капчу и далее использовать комбинацию «ответ»-«значение для проверки» в своём скрипте (по ссылке в начале поста как раз такой случай)
Новый плагин на капчу { 2p2v.org }
Перед проверкой ответа — надо убедиться, что он не пустой. В противном случае, злоумышленник может не загружая картинку или удалив идентификатор текущей сессии, передать пустое значение и пройти капчу, т.к. произойдёт сравнение двух пустых строк (в PHP несуществующее значение равно пустой строке).
Антипример: уже упомянутый мной код if($_POST[‘captcha’] == $_SESSION[‘captcha’]) return true;
Причем этот код был написан опытным программистом.
После проверки, сохраненное значение капчи необходимо удалить. Если не сделать этого, злоумышленник сможет использовать данное значение снова неограниченное число раз. Да, при обновлении страницы с формой обновляется и капча (либо при генерации формы, либо при генерации картинки), вот только скрипт может не загружать форму снова (надо упомянуть, что это не актуально если на сайте используются одноразовые csrf-токены для форм).
Антипример: гипотетическая форма логина, в которой достаточно один раз ввести капчу правильно, и далее подбирать пароль скриптом, избегая перегенерации капчи на сервере.
Пуленепробиваемая капча
Защита от перебора. Если ваша капча устойчива к распознаванию, но не очень устойчива к перебору (например на ней надо прочитать всего 3-4 цифры), желательно ограничить число неправильных ответов «с одного ip» / «для одного логина» / etc. Такие ограничения необходимо проверять ДО проверки самой капчи (то есть даже в случае правильно введенной капчи, при наличии ограничения она не должна считаться пройденной) иначе оно не будет препятствовать перебору.
Защита от DoS. При генерации капчи на своем сервере, надо понимать что это удобный вектор проведения DoS атак (которую, в отличие от DDoS, может устроить любой школьник). Для защиты можно ограничить число генерации капчи для одного ip, кэшированием капч и т.д. Подробнее про это
Защита от распознавания. Если вы выбираете капчу, или вдруг собираетесь написать её сами, желательно понимать какая капча более защищена от распознавания. Существуют готовые универсальные скрипты распознавания капчи, работающие по принципу OCR, а в случае если ваш сайт заинтересует спамеров есть риск, что будут использовать / писать скрипт конкретно под вашу капчу. Последнее правда относится больше к сайтам уровня Яндекс или vk, а вот вариант с защитой от банальных OCR желательно предусмотреть.
Защита от антигейтов. Если говорить формально, то капча как тест Тьюринга не обязана защищать вас от антигейтов, так как в этом случае её будет распознавать человек. С практической же точки зрения, этот вопрос весьма актуален и защищаться как-то надо.
Тут нет и не может быть «золотого стандарта» (ибо в таком случае антигейты внедрят его поддержку), поэтому вы вольны дополнять капчу любыми ухищрениями, чтобы сделать её распознавание через антигейт невозможным. Например:
— нестандартная капча (сбор паззла, поворот изображения, клик по области на фото и т.п.);
— кириллическая капча — самое простое решение, но имеет ряд минусов: подходит только для проектов с русскоязычной аудиторией, есть антигейты с поддержкой кириллицы;
— использование виртуальной клавиатуры рядом с капчей для ввода нестандартных символов или фигур (может быть неудобно пользователям мобильных);
Юзабилити
Не просите ввести капчу, если вы уже убедились, что перед вами человек. Тут однако, надо быть осторожным, чтобы форму нельзя было использовать скриптом неограниченное число раз после однократного ввода капчи человеком.
Пример: форма регистрации. Если я где-то регистрируюсь, и забыл ввести поле «почтовый индекс», но правильно ввёл капчу — не надо показывать мне новую. Потратьте 10 минут на то, чтобы сохранить где-то у себя, что вот эту конкретную форму сейчас пытается заполнить живой человек.
Для облегчения распознавания человеком: не используйте в капче одновременно буквы и цифры, не используйте одновременно прописные и строчные буквы, исключите похожие символы.
Отказ от использования капчи
Лучшая капча — отсутствие капчи. Там где можно отказаться от её использования — это надо сделать. Возможно для этого придется реализовать дополнительные лимиты и проверки, но пользователи скажут вам спасибо.
Но тут надо быть очень осторожным. Например: форма регистрации без капчи, с полем email на который приходит письмо с активацией. Без дополнительных средств защиты такую форму могут завалить «левыми» адресами, и ваш сайт включат в черные списки почтовые службы. В таком случае можно обходиться без капчи, но только если у вас есть другой рубеж защиты, вроде лимита по ip.
Кому то информация в этом топике покажется очевидной, но если бы я не сталкивался с примерами непонимания этих простых принципов в жизни, в том числе у опытных коллег-разработчиков, я бы не стал тратить время на написание этого текста.
Источник: habr.com
Что такое капча простыми словами, капча при регистрации, зачем она нужна, плюсы и минусы
Капча — как Великая Китайская стена: обойти сложно, лезть не хочется. Зачем она вообще нужна на сайте, можно ли обойтись без нее и как сделать ввод капчи максимально удобным для пользователя?
Капча: что это такое
Капча (captcha) — это специальный защитный код, который показывается на некоторых сайтах в виде всплывающего окна или картинки. Пользователю предлагается решить простую задачу, подтвердить статус, ввести слова или цифры, ответить на вопрос. Если этого не сделать, вы не сможете далее пользоваться сайтом. Так программа определяет, реальный ли вы человек или бот.
Какие бывают капчи
Ввод капчи можно разделить на несколько способов.
-
Ввод текста, цифр, символов . В щадящем варианте это простое слово или комбинация цифр, в жестком — набор символов разного регистра, порой плохо читаемых.
Также часто встречается капча из двух слов.
Какого бы вида ни была капча, бот не может справиться с ее заданиями. Разумеется, механизмы ботов совершенствуются и учатся, но вместе с ними учатся и разработчики сайтов, создавая новые улучшенные версии капч.
Зачем нужна капча
Капча нужна в первую очередь владельцам сайта — для простых пользователей это одна морока. Защитная программа ставится, чтобы отсеять ботов, которые хотят попасть на сайт для разных целей. Рассмотрим подробнее, как капча помогает справиться с ботами.
- Защита от спама . Боты могут рассылать рекламу, оставлять спам-комментарии и отзывы. Если у вас крупный сайт и не хочется вычищать все это вручную, поможет капча.
- Защита от DDoS-атак — когда на сайт одновременно направляется множество запросов, которые сервер физически не может обработать, и сайт рухнет. Капча может сдержать этот поток.
Когда показывается капча
- При регистрации на сайте. Пользователю предлагается заполнить необходимые поля и ввести капчу.
- Когда нужно совершить на сайте действие: оставить комментарий, написать сообщение.
- По ситуации. Такое часто бывает во «ВКонтакте»: сидишь, листаешь ленту, и внезапно появляется капча. Это только на первый взгляд внезапно, на самом деле так система реагирует на подозрительную активность. Например, вы слишком быстро отвечаете на сообщения или часто лайкаете. Ввод капчи поможет удостовериться, что вы не бот.
- Постоянно. Это самый негативный сценарий, когда капча мешает просматривать сайт и совершать действия. Он запускается, если система защиты сайта «решила», что вы пытаетесь взломать его или подобрать логин и пароль. В этом случае капча будет показываться каждый раз, когда вы заходите на сайт, вводите логин и пароль или пытаетесь совершить какое-либо действие.
Минусы капчи
- Это неудобно для пользователя . Неудобно, когда приходится вглядываться в неразборчивый набор букв и цифр, а при ошибке начинать сначала. Неудобно, что ошибиться проще простого: сложно отличить букву «О» от цифры «0». Неудобно, что капча не может запомнить, что я не робот, и появляется снова и снова.
Помню, как бесила меня капча на ресурсе Advego, которая появлялась, наверное, каждую минуту. Работать было невозможно, и я перестала пользоваться сайтом.
Вполне жизненный пример: пользователь выбрал товар в интернет-магазине, уже готов его купить, и на последнем этапе его просят ввести капчу при регистрации. Если капча сложная, он вполне может покинуть сайт навсегда.
Источник: kokoc.com
Что значит капча (captcha) в интернет-сленге и зачем она нужна
В Интернет-сленге есть множество интересных слов. Хотя «капча» может казаться чем-то новым, она знакома каждому пользователю сети. Это тест, который используется на более чем 3,5 млн. сайтов, а люди проходят его чаще 300 млн. раз в день. Рассмотрим подробно, что такое капча (англ. captcha), основные виды, как работает, для чего используется.
Значение слова
Термин CAPTCHA представляет собой аббревиатуру, состоящую из первых букв слов англ. выражения «Completely Automated Public Turing Test To Tell Computers and Humans Apart», что расшифровывается как «полностью автоматизированный публичный тест Тьюринга, отличающий компьютеры от людей».
Слово придумано в 2000 г. исследователями в области компьютерных технологий Л. фон Аном, М. Блумом, Н. Дж. Хоппером, Дж. Лэнгфордом из американского Университета Карнеги-Меллона. Зная происхождение и расшифровку слова captcha, разберемся, что это такое, простым языком.
Капча (captcha) – это специальная программа, предназначенная для различения данных, вводимых человеком, от машинного ввода, как правило, для защиты веб-сайтов от спама, автоматического извлечения данных. Иными словами, это система, проверяющая, что пользователь – человек, а не бот (автоматизированная программа).
Как работает капча
Технология captcha работает следующим образом: пользователю при входе на сайт предлагается решить тест, определяющий, является он ботом или человеком. Это проверка безопасности, которую легко могут пройти люди, но неспособны решить компьютерные программы, боты. Символы в тесте искажаются так, что любая технология оптического распознавания символов дает сбой, и только человек может читать и понимать текст.
Если пользователь успешно проходит проверку безопасности и подтверждает, что не является роботом, он получает доступ к веб-ресурсу. На решение задачи требуется около 10 секунд.
Как появляется капча
Капча может появляться на странице в разном виде. Распространенный тип – текст с искаженными символами (включая цифры, буквы), который необходимо просмотреть и ввести в отдельное поле. Если символы совпадают с кодом, тест считается пройденным. Текст также воспроизводится в виде аудиозаписей (MP3) для людей с нарушением зрения. Боты способны обнаружить наличие самого аудиофайла, но распознать содержащуюся в нем информацию может только человек.
Также часто встречается капча, основанная на распознавании изображений. Боты путем чтения исходного кода могут определять наличие картинки (файла в формате JPEG или GIF), но не могут вычислить, что на ней изображено.
Пользователю предлагается визуальная головоломка на основе фотографий из Google Images. Ему нужно выбрать картинки конкретной тематики из представленного набора изображений (нажать на все фото с автомобилями) или щелкнуть по всем частям изображения, содержащим конкретный объект (дорожный знак):
Другие типы капчи бывают:
- математическая, требующая решения задания с цифрами (вычитания, сложения 2-х чисел);
- 3D Super – идентификация 3D изображения;
- маркетинговая – ввод конкретного слова, связанного с брендом спонсора;
- «Я не робот» (No Captcha), требующая поставить галочку:
ReCAPTCHA
Самой популярной формой капчи является reCAPTCHA – система, созданная изначально для оцифровки книг.
Слова в тесте взяты из отсканированных текстов старых газет, журналов, книг и не всегда могут быть идентифицированы программами автоматической оцифровки, или программным обеспечением оптического распознавания символов (OCR). Ответы пользователей на тест в полях используются для проверки содержимого отсканированного листа бумаги и помогают расшифровывать тексты, недоступные для распознания машинами.
Google также использует reCAPTCHA, чтобы помочь в анализе уличных знаков. Изображения, полученные с камер Google Street View, подаются в систему для добавления данных в проект Google Maps в виде более точных названий улиц и дорожных знаков.
Как обойти капчу
Пользователи сети, предпочитающие не решать CAPTCHA, используют расширения веб-браузера, позволяющие обходить коды. К популярным надстройкам относятся:
- AntiCapture – плагин для браузеров Google Chrome, Mozilla Firefox, находящий и решающий капчу на веб-странице;
- CAPTCHA Be Gone – утилита, обнаруживающая капчу на веб-страницах, решающая ее и копирующая результат в буфер обмена. Она подходит для Internet Explorer, Google Chrome, Mozilla Firefox;
- Rumola – надстройка для браузеров Google Chrome, Mozilla Firefox, Safari, автоматически ищущая капчу на посещаемых страницах. Для устройств, подключенных к Интернету, также используется букмарклет JavaScript.
По мере того, как стараниями специалистов боты становятся умнее, CAPTCHA также развивается, поэтому эти программы могут требовать обновлений.
Капча и искусственный интеллект
Кроме того, что CAPTCHA используется из соображений безопасности, она способствует развитию технологий искусственного интеллекта (ИИ). Поскольку система является барьером для спамеров и хакеров, их усилия направлены на поиск новых способов ее обойти. Для этого изобретаются новые, более умные, машины, что приводит к развитию области искусственного интеллекта.
Капча – важный инструмент в системе защиты сайтов от спама и кибератак. Это тест, который может пройти каждый человек, чтобы получить доступ к веб-ресурсу. Кроме обеспечения безопасности, капча вносит большой вклад в оцифровку текстов, улучшение карт и развитие искусственного интеллекта. Узнайте также, что значит верифицирован, софт, парсинг, чтобы расширить свой запас модных слов.
Источник: proslang.ru