Варіанти капчі. 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 вводів капч.

Висновок

Спаму в сучасному Інтернеті величезна кількість, і не виключено, що незабаром придумають нові, ефективніші методи захисту веб-сайтів від шахрайства. Але поки що єдиним порятунком для власників ресурсів залишаються капчі, що фільтрують шкідливу дію автоматичних програм.

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

    якийсь “куцій” огляд… начебто поспішали кудись