Способи захисту сайту від автоматичного заповнення Web-форм

Лютий 16, 2008 Автор: admin

На даний час проблема спаму в мережі Internet набуває все більшого розмаху. Це стосується як електронної пошти, так і форм відправки даних на Web-сайтах.

Чим поганий спам на сайті?

  • Коли відвідувачі бачать на Вашому ресурсі велику кількість рекламного сміття серед решти повідомлень, то у них може скластися помилкове враження про те, що Ви закинули свій сайт. Та й Web-сайт з великою кількістю спам-коментарів сприймається якось несерйозно.
  • Якщо Web-ресурс присвячений, наприклад, комп’ютерній графіці, але значна частина коментарів до статей містить спам-рекламу туристичних послуг, то для пошукової системи тема сайту буде незрозумілою, нечіткою.

В цій статті ми розглянемо найбільш поширені способи захисту, метою яких є дозволити обробляти форму з даними виключно «живій» людині, а не боту*.

* Бот - спеціальна програма, що виконує автоматично і/або за заданим розкладом певні дії, видаючи себе за користувача. За допомогою ботів зловмисники масово залишають спам на сайтах.

Способи захисту, що потребують дій від користувача

Гадаю, що систему захисту від спаму на сайті CAPTCHA (вимовляється як «капча») представляти не потрібно. Ви, мабуть, бачили «спотворені» символи (цифри, букви) на форумах, гостьових книгах, при реєстрації нових користувачів, відправці SMS через Internet, які потрібно розпізнати і ввести з клавіатури, тим самим доводячи, що Ви не бот.

Капча - це комп’ютерний тест, який використовують для того, щоб визначити, ким є користувач Web-сайту: людиною чи комп’ютером.

Мал. 1. Приклад капчі (http://ru.wikipedia.org/wiki/CAPTCHA)

Мал. 1. Приклад капчі з сайту http://ru.wikipedia.org/wiki/CAPTCHA.

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

Основна ідея CAPTCHA-тесту: запропонувати користувачу таку задачу, з якою він легко справиться, а, ось, комп’ютер не зможе її розв’язати або для нього це буде надскладною задачею.

Капча найчастіше використовується при необхідності попередити використання Internet-сервісів спам-ботами, наприклад, для унеможливлення автоматичних відправок повідомлень, реєстрації, скачування файлів, додавання коментарів до гостьової книги, відправки SMS, тощо.

Капча є одним з найбільш популярних засобів захисту від спаму. Цей метод використовується великими Internet-сервісами, включаючи Google, MSN, Яндекс, та ін.

Як працює класична CAPTCHA (загальна схема)?

  1. В скрипті (наприклад, на мові PHP) випадковим чином генерується «секретний» текст і зберігається на сервері за допомогою сесії. Потім засобами мови програмування створюється і виводиться картинка (капча) з цим текстом.

    Важливо, щоб «секретний» текст ніяк не витягувався (діставався) з даних, які передаються браузеру, лише з малюнку.

  2. Користувач, при відправці форми на сайті, повинен ввести цей «секретний» текст у відповідне поле.
  3. В скрипті, який опрацьовує Web-форму, перевіряється відповідність переданого поля із значенням сесії. При рівності значень, робота скрипту продовжується, тобто додається запис в гостьову книгу чи реєструється новий користувач.

Ефективність капчі залежить як від складності створення алгоритму її розпізнання, так і від популярності того чи іншого захисту. Оскільки намагатись зламати навіть примітивний, але незвично захищений сайт з середньою відвідуваністю, скоріш за все, ніхто не стане.

Недоліки більшості капч:

  • Сучасні боти «навчилися» розпізнавати навіть викривлені символи і таким чином зламувати захист.
  • CAPTCHA заставляє користувача напрягтись, заповняючи зайве поле.
  • Капча створює практично непрохідний бар’єр для людей з поганим зором і дальтоніків.
  • Інколи картинка з текстом настільки спотворена, що не лише бот, але й людина з нормальним зором не в змозі розібрати, що треба вводити. Ситуація загостриться, якщо вже заповнена Web-форма, наприклад, з великим об’ємом даних, а тоді неможливо розібрати «секретний» текст. Оновлювати сторінку шкода, але що робити, приходиться. Хоча Web-умільці знайшли вихід з цієї ситуації. Створено капчі, які дозволяють оновити число (а точніше картинку) за допомогою JavaScript без оновлення всієї сторінки і відповідно без втрати полів (заповнених з такими зусиллями).

Чи важко обійти капча-захист?

Капча не є 100%-во надійним методом захисту. Але чи такий є взагалі?! Існує декілька способів її обходу. З цією метою можуть використовуватися OCR-програми (програми оптичного розпізнання тексту).

Найяскравішим представником таких програм є FineReader. Оскільки є можливості підключати модулі із FineReader в програми сторонніх розробників для розпізнання картинок.

Проте в більшості випадків обійти капча-захист можна навіть без використання OCR. Наприклад, найняти людей для відгадування. Або ж організувати т. з. метод «леммінгів», де в процесі розпізнавання капчі приймають участь багато справжніх людей: спамери перерозміщають картинку з сайту, який вони хочуть зламати, на спеціальний сайт з великою відвідуваністю, де, щоб отримати доступ до інформації (найчастіше порнографічного змісту) людина розгадує таку капчу і повідомляє результат спамерам (не безпосередньо, а вводячи текст з картинки в спеціальне поле).

Ідеї капч, які відрізняються від класичного варіанту

До таких можна віднести, аудіо-капчі, математичні задачі, текстові задачі, розпізнання предметів, тощо.

В якості альтернативи можуть використовуватися математичні задачі (наприклад, відвідувача, який виявить бажання залишити коментар, скрипт просить розв’язати простеньку задачу: “скільки буде 2 плюс 5?”.

Даний спосіб є хорошим рішенням, але пристойний захист він може забезпечити тільки в силу своєї новизни і малої популярності. Насправді, виконувати арифметичні дії комп’ютер вміє краще за людину та й для самої людини виконання в умі дій може бути стомлюючим і відносно складним заняттям.

Текстові задачі.

Відвідувачу сайту задається запитання, на яке він повинен дати відповідь (наприклад, на блозі http://laset.info я зустрічався із запитанням: «Столиця України?»). Як правило, відповідь можна ввести в поле або вибрати зі списку. Перевагою даної ідеї є те, що перевірка доступна для людей з порушеннями зору. Недоліки ідеї: користувач повинен добре володіти мовою, на якій задається запитання, окрім того кількість питань є скінченна, тому зловмисник може скласти базу питань з відповідями.

Найбільш досконалими на даний момент визнаються тести CAPTCHA, які використовують графічні зображення різних об’єктів. Суть такого тесту - перед відправленням даних з форми користувачу потрібно вибрати з переліку картинок ті, на яких зображена жива природа, чи котики, чи щось інше. При цьому порядок вибору правильних зображень може мати значення або бути не важливим. Оскільки боти неспроможні розрізняти образи, цей капча-тест є високоефективним засобом захисту від спаму. Дана реалізація захисту від спаму є доволі перспективною, оскільки менше напрягає користувача. Цей вид капчі Ви можете побачити, до прикладу, на сайті http://www.kyivstar.net (мобільний оператор «Київстар») при відправці SMS-повідомлень.

Декілька готових CAPTCHA-рішень:

а) Скрипт «Security Images in PHP»

Web-сайт: http://www.codenet.ru/webmast/php/Security-Images-in-PHP/

Системні вимоги: PHP>=4.0.6, бібліотека GD >=2.0.

Мал. 2. Скрипт «Security Images in PHP» інтегрований у Web-форму

Мал. 2. Скрипт «Security Images in PHP» інтегрований у Web-форму.

б) Captcha 3D (безкоштовна анти-спам система)

Web-сайт: http://blockspam.ru/

Цей метод захисту представляє собою генерацію зображення з об’ємними образами, які людині сприйняти легше, ніж «плоскі» зображення, а комп’ютеру навпаки.

Мал. 3. Вигляд картинки, створеної за допомогою Captcha 3D (на малюнку - UYBEE)

Мал. 3. Вигляд картинки, створеної за допомогою Captcha 3D
(на малюнку - UYBEE).

Що дає CAPTHCA 3D Web-майстру?

  • Простоту інтеграції в сайт.
  • Гнучкість (Ви маєте можливість добитись тої степені захисту, яка Вам необхідна).
  • Нема необхідності слідкувати за оновленнями CAPTHCA-зображення.

в) KCAPTCHA

Web-сайт: http://www.captcha.ru/kcaptcha/

Версія: KCAPTCHA 1.2.5.

Системні вимоги: PHP версії 4.0.6 і вище з підтримкою GD версії 2. Не потрібно ні бібліотеки для роботи зі шрифтами (Libttf та ін.), ні ImageMagick.

Проект KCAPTCHA - це готове рішення, написане на мові PHP, яке Ви можете безкоштовно закачати і встановити на свій сайт для захисту від спаму и флуду.

Мал. 4. Приклад роботи KCAPTCHA (зображення створюється на льоту)

Мал. 4. Приклад роботи KCAPTCHA (зображення створюється “на льоту”).

У комплект входить набір растрових шрифтів, тому скрипт швидше за все буде відразу готовий до роботи, не вимагаючи установки додаткових компонент. Можна настроювати кольори і набір символів, які вживатимуться при створенні зображення.

г) Anti Spam Image 0.7

За адресою http://www.cybercore.ru/download/anti_spam_image.rar можна закачати собі Anti Spam Image 0.7 (капча-плагін) від Максима (http://maxsite.org/).

Мал. 5. Anti Spam Image 0.7 на сайті

Мал. 5. Anti Spam Image 0.7 на сайті.

Капча (малюнок) оновлюється без перезавантаження всієї сторінки. Просто клацаєте по малюнку і він оновлюється.

Є ще також варіант цієї ж капчі, але поправлений і настроєний Тарасом (http://www.cybercore.ru/anti-spam-image-07-obnovlenie-s-obnovleniem/).

Способи, що не потребують дій від користувача

Ці способи захисту є більш дружелюбні до відвідувача сайту, ніж різного роду капчі і тому при їх застосуванні зручність в користуванні сайтом для відвідувача зростає. Система може як обмежувати кількість запитів, так і намагатись відрізнити людину від бота за непрямими ознаками в поведінці. Непрямі ознаки тому і “непрямі”, що не дають гарантії, а тільки збільшують ймовірність того, що бот “не пройде”.

Головна відмінність бота-програми від людини - це підхід до Web-сторінки як до послідовності тексту і тегів, тоді як пересічна людина бачить кінцевий результат (візуальний образ) і код сторінки її мало цікавить.

Більшість способів, які не потребують активних дій від користувача при відправленні Web-форми, базуються на тому, що середньостатистичний бот, на відміну від повноцінного браузера, не навчений інтерпретувати CSS, JavaScript, Flash, тощо.

Обмеження по частоті повідомлень

Суть методу: необхідно стежити, щоб з однієї і тієї ж IP-адреси не було більше ніж, наприклад, десять повідомлень в хвилину. Оскільки навряд чи відвідувач взмозі з такою частотою писати розумні думки. Зауважте, цей трюк не позбавляє від спаму, а лише скорочує його об’єм. Він має сенс тоді, коли примушувати користувача вирішувати капчу не можна, а захиститися треба. Обмеження кількості запитів з однієї IP-адреси - це доволі простий спосіб, малоефективний, щоправда, при достатній підготовленості зловмисника.

Блокування за часом завантаження форми

Захистом може бути блокування при обробці повідомлення на певний час, що пройшов між завантаженням форми і її відправкою - людині, на відміну від бота, явно потрібен якийсь час на введення даних (який, як правило, більший за 1-2 секунди).

Блокування повідомлень за ключовими словами

Фільтр працює зазвичай так: до публікації не допускаються повідомлення, що мають в тексті непристойні слова, образливі, лайливі фрази, тощо.

Зміна імен полів, які беруть участь в передаванні даних

Більшість спам-роботів шукають на сторінці поля із стандартними іменами, наприклад, «name», «email», «mail» і тому подібне. Щоб доставити боту деяку незручність, краще називати поля нестандартно. Або можна, наприклад, поле «електронна пошта» назвати «name», а «ім’я» - «email», з розрахунку на те, що бот прийме рішення про суть полів по атрибуту name тегу <input>.

Створення полів-приманок

Раз спам-бот шукає поля «name», «email» і тому подібні, чому б не дати їх йому. Створюємо приховане поле, не hidden, а, наприклад, приховане засобами CSS. Звичайний відвідувач не бачить це поле і природно не заповнює його. Спам-робот заповнить це поле. Форма повинна оброблятися тільки, якщо приховане нами поле буде порожнім. Серед полів-приманок звичайно мають бути поля, які б бачив користувач, але їм слід дати нестандартні імена.

Блокування повідомлень за розміром екрану

Даний спосіб захисту працює за простою схемою: якщо при програмному визначенні у відвідувача нема розмірів (ширини, висоти) екрана, то форму намагається надіслати бот, отже її не слід обробляти.

Побудова форми за допомогою JavaScript

Цей метод робить аналіз форми ще складнішим: боту необхідно знайти і виконати код JavaScript, щоб отримати поле, яке слід заповнити. Можна, наприклад, заховати поле в JavaScript-код так:

<form action="..." name="addMsg" method="post">
<script language="JavaScript" type="text/javascript">
...
document.write('<inp'+'ut n'+'ame="a'+'ntis" t'+'ype="hi'+'dden"
va'+'lue="1'+'10'+'4">');
...
</script>
</form>

А тоді на стороні сервера слід перевіряти чи існує $_POST[’antis’] та, чи вона рівна 1104.

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

Висновок

В цій статті ми спробували розглянути деякі найбільш популярні способи захисту сайту від атак спам-роботів. Описані в ній приклади не гарантують на 100% того, що Вас ніхто не «зламає». Завжди, навіть в популярних і довершених системах є вузькі місця, приклад тому випадок, коли на сайтах по всьому світу в запитах в мові SQL (Structured Query Language - структурована мова запитів) була знайдена груба помилка, що отримала назву SQL Injection.

В даній публікації не було згадано ще одного методу боротьби про який варто сказати пару слів. Мова йде про реєстрацію користувачів та модерацію коментарів.

Суть цього методу полягає в тому, що, наприклад, коментарі в Гостьовій можуть залишати не всі відвідувачі, а лише ті, що зареєстровані на сайті. Реєстрація є бар’єром для масової розсилки спаму. Модерація коментарів полягає в тому, що публікуються тільки ті думки відвідувачів, що прямо схвалені адміністратором Web-ресурсу.

Мінуси такого підходу: адміністраторові сайту потрібно буде приділяти увагу і витрачати час на перевірку користувачів, на видалення/редагування некоректних повідомлень, на затвердження коментарів, тощо. Крім того, існують незручності для відвідувачів - не кожен захоче реєструватись, щоб залишити свою думку про опубліковану статтю або чекати схвалення свого запису в Гостьовій.

Ну, і декілька тез на останок:

  • Капча, яку дуже важко розібрати або дати на неї правильну відповідь може відбити у відвідувачів бажання залишити повідомлення на сайті.
  • Робіть капчу самостійно (звичайно, якщо Ви розумієтесь у Web-програмуванні та не зробите «дитячих» помилок), бо чим оригінальніший і мало популярний захист, тим надійнішим він буде від ботів.
  • Як правило, зловмисники-професіонали дотримуються правила: вартість обходу капча-захисту не повинна перевищувати можливого прибутку. Звідси висновок: зі зростанням відвідуваності сайту зростає кількість спам-атак на цей ресурс.
  • Зверніть Вашу увагу на чесних користувачів, адже їх є 99.99% із загальної кількості відвідувачів сайту і через якихось спамерів вони не повинні страждати.

Джерела

Популярність: 100%

Теґи до статті: , , , , , , , , , , .

Сподобалось?

Поділіться цією статтею з друзями:   Share on Twitter! Share on Delicious Share on Digg! Share on Reddit! Subscribe by RSS! Share on StumbleUpon!

Читайте також:

Залишити коментар

Коментарів: 4 до “Способи захисту сайту від автоматичного заповнення Web-форм”

  1. MaksymNo Gravatar каже:

    А чи важко зробити таке:
    сторінка із формою завантажується лише тоді, коли користувач клікне по посиланню “скачати файл”. Після цього починається скачування файлку та відображається форма підписки. ?

    Тоді мабуть і каптчі не потрібно?

  2. adminNo Gravatar каже:

    Відносно неважко. Чому “Відносно”? Бо для цього потрібно програмувати. Та й способів реалізації є чимало.

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

  3. bohdaqsNo Gravatar каже:

    збільшуючи захист ми тільки збільшуємо рівень майстерності спамерів)

  4. adminNo Gravatar каже:

    bohdaqs сказав: “збільшуючи захист ми тільки збільшуємо рівень майстерності спамерів)”

    То що нам (маю на увазі власників сайтів) нічого не робити, лиш би спамери не мали на чому вчитися :)
    Якщо ми не захищатимемося, то наші сайти перетворяться на помийну яму, в яку буде страшно заглядати.
    Якщо спамери не знаходитимуть обхідних шляхів, то залишаться без хліба.
    Боротьба йде за місце під сонцем.

Залишити коментар

XHTML: Ви можете використовувати наступні теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>

Spam Protection by WP-SpamFree