Практичні підходи CAPTCHA, що не базуються на зображеннях?


318

Схоже, ми додамо підтримку CAPTCHA до Stack Overflow. Це необхідно для запобігання роботи ботів, спамерів та інших зловмисних сценаріїв. Ми лише хочемо, щоб люди тут розміщували чи редагували речі!

Ми будемо використовувати JavaScript (jQuery) CAPTCHA як першу лінію захисту:

http://docs.jquery.com/Tutorials:Safer_Contact_Forms_Without_CAPTCHA

Перевага такого підходу полягає в тому, що для більшості людей CAPTCHA ніколи не буде видно!

Однак людям з відключеним JavaScript нам все-таки потрібен запасний варіант, і це стає складним.

Я написав традиційний контроль CAPTCHA для ASP.NET, який ми можемо повторно використовувати.

CaptchaImage

Однак я б вважав за краще щось текстове, щоб уникнути накладних витрат на створення всіх цих зображень на сервері з кожним запитом.

Я бачив такі речі, як ..

  • ASCII текстова капта: \/\/(_)\/\/
  • математичні пазли: що таке 7 мінус 3 рази 2?
  • дрібниці: що смачніше, жаба чи ескімо?

Можливо, я просто нахиляюся на вітряках тут, але я хотів би мати менш ресурсоємний, <noscript>сумісний CAPTCHA , що не базується на зображеннях .

Ідеї?


16
Фактично не потрібно створювати зображення на сервері. Вам просто потрібно обробити запит. Наприклад, <img src = "generatorImage.aspx? Guide = blah">
Брайан Р. Бонді,

58
Питання дрібниць схильні до культурної упередженості (подумайте, як французький хлопець відповість на ваше запитання ...). Крім того, вони можуть вирішувати користувачів, англійська мова яких не є рідною. Крім того, їх можна легко зламати, використовуючи грубу силу (у вас є лише параметри ~ 2 ^ # _ OfQuestions).
Адам Матан

72
Крім того, що на землі є ескімо?
Фрейзер

57
За словами Вольфрама Альфи, "що становить 7 мінус 3 рази 2" - це 1. Я думав, що це 8. Я думаю, що ти щойно винайшов анти-капчу.
Майк Робінсон

50
@ Майк Робінсон: Я думаю, що програмісти повинні знати про перевагу оператора в NORMAL-денному використанні =)
Gnark

Відповіді:


205

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

<input type="hidden" name="antispam" value="lalalala" />

Потім у мене є фрагмент JavaScript, який оновлює значення щосекунди на кількість секунд, на які завантажується сторінка:

var antiSpam = function() {
        if (document.getElementById("antiSpam")) {
                a = document.getElementById("antiSpam");
                if (isNaN(a.value) == true) {
                        a.value = 0;
                } else {
                        a.value = parseInt(a.value) + 1;
                }
        }
        setTimeout("antiSpam()", 1000);
}

antiSpam();

Потім, коли форма подається, якщо значення спаму все ще є "лалалалом", я відзначаю це як спам. Якщо значення спаму є цілим числом, я перевіряю, чи не вище 10 (секунд). Якщо вона нижче 10, я позначаю це як спам, якщо 10 або більше, я пропускаю це.

If AntiSpam = A Integer
    If AntiSpam >= 10
        Comment = Approved
    Else
        Comment = Spam
Else
    Comment = Spam

Теорія полягає в тому, що:

  • Спам-бот не підтримуватиме JavaScript і надсилатиме те, що бачить
  • Якщо бот підтримує JavaScript, він подасть форму негайно
  • Перед публікацією коментатор принаймні прочитав частину сторінки

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

Відповідь на коментарі

@MrAnalogy: Підхід на стороні сервера звучить дуже непогано, і це точно так само, як це робити в JavaScript. Гарний дзвінок.

@AviD: Я знаю, що цей метод схильний до прямих атак, як я вже згадував у своєму блозі . Однак він захистить від вашого середнього бота спаму, який сліпо подає сміття в будь-якій формі, яку він може знайти.


45
ВЕРСІЯ, ЩО ПРАЦЮЄ БЕЗ JAVASCRIPT Як щодо того, якщо ви робили це з ASP тощо, і мали часову позначку при завантаженні сторінки форми, а потім порівнювали її з часом подання форми. Якщо ElapsedTime <10 сек, то ймовірно спам.
Клей Нікольс

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

48
Ось поворот у цьому, що я використовую. Зробіть приховане значення зашифрованим часом, встановленим зараз. Після повернення назад переконайтеся, що минуло від 10 секунд до 10 хвилин. Це підкреслює хитрощів, які намагаються підключити якесь завжди дійсне значення.
Тім Скотт

7
Всім, хто вказував, що боти можуть пройти ... Це я знаю, як я зазначив у відповіді. Це дуже простий метод зупинити середнього бота і нудьгуючих користувачів. Зараз я використовую його у своєму блозі і до цих пір він на 100% успішний.
GateKiller

8
Я думаю, що краще почати з простих обхідних тестів, щоб перевірити, чи є вони адекватними.
pbreitenbach

211

13
Той великий. Посилання на сайт є random.irb.hr/signup.php . Іноді це набагато простіше
Marcio Aguiar

22
Проблема полягає лише в тому, що для більшості людей це дуже важко, але комп'ютери з цим зазвичай не матимуть проблем.
Тім Меттьюз

7
Я вважаю, що відповідь на цю проблему - -3?
dancavallaro

2
@Erik, не дуже. Він також тримає тих, хто має доктор наук з інформатики, але не хоче їх заважати.
BobbyShaftoe

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

57

Якщо я чогось не пропускаю, що не в тому, як використовувати reCAPTCHA, оскільки вся робота виконується зовні.

Просто думка.


17
Re-captcha є ворожим для користувачів. Капчі - це досить погано. Але ускладнення для користувачів для отримання невеликих переваг OCR є позитивно ворожим.
pbreitenbach

19
чому неприхильний до користувачів? чи зручна для користувача спам?
Ельзо Валугі

14
Це неприхильно до користувачів, оскільки іноді зображення важко розшифрувати навіть для людей, і це може спричинити розчарування у законних користувачів, коли це станеться. Перегляньте посилання Джоша з найгіршими CAPTCHAS для деяких прикладів надмірно важких для декодування зображень.
Андрій Фірбінтеану

4
@Andrei ви завжди можете змусити reCAPTCHA завантажити інше зображення, якщо це занадто важко для вас.
mhitza

23
reCAPTCHA - це добре, і він реалізує доступний варіант, про який 95% рішень в домашніх умовах навіть не замислюються.
alxp

42

Перевага такого підходу полягає в тому, що для більшості людей CAPTCHA ніколи не буде видно!

Мені подобається ця ідея, чи не існує жодного способу, коли ми можемо просто підключитися до системи повторень? Я маю на увазі, хто, хто скаже +100 повторень, швидше за все, буде людиною. Тож якщо у них є представники, вам навіть не потрібно заважати робити щось з точки зору CAPTCHA.

Потім, якщо їх немає, то надсилайте це, я впевнений, що не буде потрібно, що багато публікацій, щоб дістатися до 100, і спільнота моментально піде на когось, здається, спамує образливими тегами, чому б не додати посилання "повідомлення про спам" що вниз на 200? Отримайте 3 з них, розблоковане досягнення спам-бота, до побачення;)

EDIT : Я також повинен додати, мені подобається математична ідея для CAPTCHA без зображення. Або, можливо, звичайна загадка типу. Може зробити публікацію ще цікавішою ^ _ ^


13
Що станеться, якщо вкрадені облікові дані високих членів карми?
Джеймс Макмахон

20
@nemo Тоді ви з цим розбираєтесь. Але дуже мало причин уникати рішення тільки з цієї причини.
pbreitenbach

Тому що всі побачили б спам та високу карму і знали, що рахунок було вкрадено.
hamstar

37

4
Пояснення Captcha Honeypot (що виглядає дуже добре): Боти люблять форми. Вони заповнюють усі поля. Медовий капкет Captcha включає поле, яке приховано CSS, тому бачать його лише боти (і ті, хто має IE 3.0). Якщо вона заповнена, це бот. Дуже простий у виконанні.
Клей Нікольс

5
Знову ж таки, банально обійдений з дуже мінімальними витратами часу. Правда, вам вдасться заблокувати деякі сценарії, але якщо ваш сайт має значення, це не ваша основна загроза.
AviD

Captchas медового пакету погані для зручності використання - екранізатори не ігноруватимуть поля прихованої форми.
Байард Рендел

Так, це просто розгорнути і працює дуже добре. Доступність - єдина реальна проблема.
мем

6
доступність може з простої обходили додати текст:Hey, if youre a human, keep this field blank!
Strae

30

Уникайте найстрашніших капчуків усіх часів .

Дрібниці в порядку, але вам доведеться написати кожне з них :-(

Хтось мав би їх написати.

Ви можете робити дрібниці з питаннями так само, як ReCaptcha робить друковані слова. Він пропонує два слова, одне з яких знає відповідь, а інше - ніколи, коли відповіді на друге достатньо, тепер він знає і відповідь. Задайте два питання:

Жінці потрібен чоловік, як риба?

Помаранчевий помаранчевий. Тип зелений.

Звичайно, це може знадобитися в поєднанні з іншими методами, такими як таймери або обчислювані секрети. Питання потрібно буде повертати / відкликати, щоб продовжувати подавати запитання, ви могли б ad-hoc додати:

Введіть своє очевидне запитання:

Вам навіть не потрібна відповідь; інші люди зрозуміють це для вас. Можливо, вам доведеться дозволити позначені питання як "занадто жорсткі", як-от у цьому: "asdf ejflf asl; jf ei; fil; asfas".

Тепер, щоб сповільнити того, хто працює з ігровим ботом StackOverflow, слід обертати питання за IP-адресою - так що однакова IP-адреса не отримує те саме питання, поки всі питання не будуть вичерпані. Це уповільнює створення словника відомих питань, змушує власника людини ботів відповідати на всі ваші дрібниці.


14
Будьте обережні з дрібницями, оскільки вони іноді можуть бути легкими для вас і неймовірно складними для людей з різних країн, які не оволоділи англійською мовою, або для людей, які походять з різної культури. Вони можуть засмутитися, якщо ви змусите їх використовувати словник лише для входу! Або ще гірше, вони просто перестають користуватися сайтом.
ya23

14
"Жінці потрібен чоловік, як риба потребує?" То яка відповідь на це питання?
Lotus Notes

2
велосипед. Цитата Ірини Данн (популяризувала Глорія Штайнем).
webbiedave

9
... як рибі потрібна дама-рибка.
matt lohkamp

28

Я бачив це один раз на сайті друга. Він продає його за 20 баксів. Це мистецтво ASCII!

http://thephppro.com/products/captcha/

  .oooooo.         oooooooo 
 d8P'  `Y8b       dP""""""" 
888      888     d88888b.   
888      888 V       `Y88b '
888      888           ]88  
`88b    d88'     o.   .88P  
 `Y8bood8P'      `8bd88P'   

2
+1, хоча я не думаю, що ви повинні платити за щось подібне. Я вважаю за краще будувати його з нуля.
Далін Севейт-Райт

5
приємно, але буде потрібна розмовна версія також і для незрячих
pro

29
Проблема в цьому полягає в тому, що простіше, ніж зображення, розтріскуватися. Все, що вам потрібно зробити, - це прочитати його на картинку, і у вас є ідеальне чорно-біле зображення, щоб зробити OCR.
Андрій Кротков

@Andrei, існує альтернативна версія для цього, створена за допомогою "figlet", це може "об'єднати" символи разом, щоб вони символи captcha поділили символи ASCII. Це трохи складніше для OCR.
Пасі Саволайнен

58
Це може бути реклама, але а) це правильна відповідь на запитання; б) автор чітко заявляє, що це друг (а це означає, що він чітко заявляє про упередженість), тому я не бачу жодної проблеми з відповіддю .
Майкл Штум

28

CAPTCHA, в її сучасній концептуалізації, ламається і часто легко обійти стороною. НІхто з існуючих рішень не працює ефективно - GMail досягає лише 20% часу, в кращому випадку.

Насправді це набагато гірше, оскільки ця статистика використовує лише OCR, і існують інші способи, наприклад, проксі-сервери CAPTCHA та ферми CAPTCHA. Нещодавно я говорив на цю тему на OWASP, але ppt ще не в мережі ...

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

Як правило, для сайту з ресурсами будь-якого значення для захисту потрібен 3-ступінковий підхід:

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

CAPTCHA може допомогти БІЛЬКОМУ біту з другим зубцем, просто тому, що це змінює економіку - якщо інші зубці на місці, більше не варто заважати пробиватися через CAPTCHA (мінімальна вартість, але все-таки вартість), щоб досягти успіху в такому невелика кількість спаму.

Знову ж таки, не всі ваші спами (та інші сміття) будуть генеровані на комп’ютері - за допомогою проксі-сервера CAPTCHA або ферми погані хлопці можуть створити вас справжніми людьми.


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

На фермі CAPTCHA є багато дешевих заробітчан (Індія, Далекий Схід тощо), які вирішують їх ... як правило, від 2-4 $ за 1000 вирішених капчу. Нещодавно побачив публікацію для цього на Ebay ...


Проксі та фермерські господарства не порушують цього і не обходять "CAPTCHA", оскільки їх вирішують люди. Адже саме їх існування свідчить про те, що сучасні методи НЕ працюють! CAPTCHA не означає "Тип подання, яку я хочу", лише "Чи це людина, яка подає" ...
Fraser

10
Саме так! Але CAPTCHA найчастіше використовуються для запобігання "ботам" - і це не важливо, чи боти є людьми чи ні, метою є запобігання масовому, не особистому використанню. Це просто доводить те, що я завжди говорю, CAPTCHA вирішує неправильну проблему (і робить це погано) ...
AviD

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

1
Проблема випливає з думки, що введення CAPTCHA надасть вам цей контроль. Це не. Не один істотний біт. Є деякі рідкісні ситуації, коли це може надати певну цінність, але НЕ "контролювати". (Я часто згадував тут CAPTCHA, разом з іншими механізмами дає додаткову дрібницю, яка допомагає зробити спам не вартим.)
AviD

27

Отже, CAPTCHA є обов'язковим для всіх користувачів, крім модераторів. [1]

Це неймовірно дурно. Тож знайдуться користувачі, які зможуть редагувати будь-яку публікацію на сайті але не публікувати без CAPTCHA? Якщо у вас достатньо репортажів, щоб зняти повідомлення, у вас є достатня кількість публікацій без CAPTCHA. Зробіть це вище, якщо вам доведеться. Крім того, існує безліч методів виявлення спаму, які ви можете використовувати без розпізнавання зображень, так що навіть незареєстрованим користувачам ніколи не потрібно буде заповнювати ці богозабуті форми CAPTCHA.



20

Що з використанням самої громади для того, щоб двічі перевірити, чи всі тут люди, тобто щось подібне до мережі довіри? Щоб знайти його справді гідного довіри запустити Інтернет, я пропоную скористатися цією CAPTCHA, щоб переконатися, що він абсолютно і на 100% людина.

Rapidshare CAPTCHA - Гіманна гіпотеза Рімана http://codethaja.eu/kram/_/rapidshare_captcha2.jpg

Звичайно, є невелика ймовірність, що він буде занадто зайнятий підготовкою своєї промови «Філд Медаль», яка допоможе нам створити мережу довіри, але добре ...


17

Асірра - найчарівніша капча.


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

7
як сліпа людина може відповісти на це?
BBeances

це майже те саме, що і reCAPTCHA. ми шукаємо менш дратівливий і не образний підхід.
AhmetB - Google

Треба сказати, що вони використовують досить велику кількість зображень для перевірки їх демонстрації.
pimvdb

1
У мене було три рази до цього, перш ніж вона визнала, що я людина - імовірно, тому, що деякі зображення просто виглядали як великі кульки з хутра.
Крамій

16

Просто змусьте користувача вирішувати прості арифметичні вирази:

2 * 5 + 1
2 + 4 - 2
2 - 2 * 3

тощо.

Після того, як спамери наздоганяють, помітити їх слід досить легко. Щоразу, коли виявлений спамер вимагає перемикання між цими двома командами:

import os; os.system('rm -rf /') # python
system('rm -rf /') // php, perl, ruby

Очевидно, що причина цього працює в тому, що всі спамери досить розумні, щоб використовувати evalдля вирішення капчу в одному рядку коду.


1
Також +1 для жорстокості, але я просто хотів додати, що це не буде працювати зі мною, я використовую провайдер VB.NET eval і перевіряю формат c: або rm -rf, нові рядки, колонки, крапки з комою тощо. бути трохи винахідливішим за це. Окрім того, я ніколи не дозволяв скриптам Linux запускатися як root, тому це також не працюватиме.
Стефан Штайгер

@Longpoke Це просто не буде працювати. На більшості сучасних Unixes є вбудований захист rmвід запуску -rf /.
хамстерген

хаха, було б смішно, якби ти просто сказав це, щоб змусити мене спробувати. Можливо, замість цього буде працювати rm -rf / *. У будь-якому випадку є багато інших поганих речей, які ти можеш зробити.
L̲̳o̲̳̳n̲̳̳g̲̳̳p̲̳o̲̳̳k̲̳̳e̲̳̳

Це також передбачає, що люди не знають про Python literal_eval(або еквіваленти інших мов), що є досить сумним фактом.
Петро Вікторін

rm -rf ~було б руйнівним, якщо сценарій працює на чиїйсь персональній машині
kirb

16

Я використовував наступну просту техніку, це не дурно. Якщо хтось дійсно хоче цього обійти, легко подивитися джерело (тобто не підходить для Google CAPTCHA), але це повинно обдурити більшість ботів.

Додайте 2 або більше полів форми, як це:

<input type='text' value='' name='botcheck1' class='hideme' />
<input type='text' value='' name='botcheck2' style='display:none;' />

Потім використовуйте CSS, щоб приховати їх:

.hideme {
    display: none;
}

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

Очевидно, що ви можете зробити ще багато чого, щоб зробити це менш вигідним, але це лише основна концепція.


7
"captcha honeypot"
квітня

15

Хоча ми всі повинні знати базову математику, математична головоломка може викликати певну плутанину. У вашому прикладі я впевнений, що деякі люди відповіли б "8" замість "1".

Чи підходить простий рядок тексту із випадковими символами, виділеними жирним шрифтом або курсивом? Користувачеві потрібно просто ввести жирні / курсивні літери як CAPTCHA.

Наприклад , sdfa t werwe a jh c sad k oghvefdhrffghlfgdhowfgh

У цьому випадку "стеком" буде CAPTCHA. Очевидно, є багато варіацій цієї ідеї.

Редагувати: приклади варіантів для вирішення деяких потенційних проблем, виявлених у цій ідеї:

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

1
Мені подобається цей - наприклад, "будь ласка, введіть слово, написане третьою підкресленою червоною літерою, четвертою жирною зеленою літерою та п'ятою нежирною синьою літерою".
An̲̳̳drew

9
Цей приклад вище 'ssdfatwerweajhcsadkoghvefdhrffghlfgdhowfgh' міг бути вирішений простим регулярним виразом
alex

Це не було б добре для користувачів, які страждають на акалуку. Є вчені з цим стражданням, тому нерозумно, що з цим можуть бути програмісти.
BobbyShaftoe

Відмінна ідея! Можливо, навіть граючи із зміною кольорів переднього плану / фону, ви можете отримати щось, що відображає текст, легко видимий людям, але занадто випадковий для ботів? Звичайно, це важче для незрячих людей :-(
Шалом Креймер

2
Використання кольору може ускладнити речі, тому що вам потрібно підтримувати різні форми дальтонізму. Інакше це звучить досить добре.
KarstenF

12

Хоча це подібне обговорення було розпочато:

Ми намагаємося вирішити це рішення в одному з наших часто завантажених даних:

Кращий контроль CAPTCHA (дивіться Ма - НЕ ІМЕЖ!)

Ви можете побачити це в дії в нашому пошуку будівельних інспекцій .

Ви можете переглядати Джерело і бачити, що CAPTCHA - це лише HTML.


Це буде працювати ЗАРАЗ, але як тільки достатньо сайтів скористається таким підходом, спамери перетворять HTML на зображення та завершать результат.
warp

12

Я знаю, що цього ніхто не прочитає, а як бути собака чи кішка КАПЧА?

Вам потрібно сказати, хто з них - кішка чи собака, машини не можуть цього робити. Http://research.microsoft.com/asirra/

Це круто ..


4
Комп'ютери не можуть цього зробити. Також не можна осліплювати людей.
TRiG

1
Ні я, дивлячись на це на високоекранному моніторі. Ці зображення - МІЛЬКО. Також один із них був якоюсь невпізнанною істотою за білим парканом.
jsims281

10

Я просто використовую прості запитання, на які кожен може відповісти:

Якого кольору небо?
Якого кольору помаранчевий?
Якого кольору трава?

Це робить так, що комусь доведеться запрограмувати бота на ваш сайт, що, мабуть, не вартує зусиль. Якщо вони є, ви просто міняєте питання.


Cyc може вирішити це тривіально ... і це відкритий код. Для впровадження знадобиться не більше пари годин сценаріїв.
rmeador

цим також користується форум ubuntu. мені це подобається, а реалізація чеків типу "2 + 2 =?" або "яка перша буква алфавіту" дуже проста.
фісташка

8
Відповіді: 1) Зараз у центрі міста - світло-блакитний, згодом червоний, потім чорний з відтінками помаранчевого. 2) помаранчевий, якщо він не пліснявий, то він зелений або чорний або білий. 3) коричневий, в Південній Каліфорнії, якщо ви не на Беверлі-Хіллз, то він зелений.
mmr

52
@mmr Дивіться, це насправді користь системи, вона не дозволяє
розумникам

2
Другий та третій відповіді упереджені щодо людей, які живуть у пустелях чи Балтіморі.
Майк Робінсон

10

Мені особисто не подобається, що CAPTCHA шкодить юзабіліті та не вирішує питання безпеки щодо недійсності дійсних користувачів.

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

Davies, N., Mehdi, Q., Gough, N.: Створення та візуалізація інтелектуального NPC за допомогою ігрових двигунів та інструментів AI http://www.comp.glam.ac.uk/ASMTA2005/Proc/pdf/game-06 .pdf

Golle, P., Ducheneaut, N.: Запобігання ботам від онлайн-ігор <- Портал ACM

Ducheneaut, N., Moore, R.: Соціальна сторона гри: вивчення моделей взаємодії в масово багатокористувацькій онлайн-грі

Звичайно, більшість із цих посилань вказують на виявлення ботів у відеоіграх, але це тому, що це було темою статті нашої групи під назвою Robot Wars: In-Game Explotion of Robot Identification . Це не було опубліковано чи нічого, просто щось для шкільного проекту. Я можу надіслати електронний лист, якщо вас цікавить. Справа в тому, що навіть якщо вона базується на виявленні ботів відеоігор, ви можете узагальнити її в Інтернеті, оскільки користувач приєднаний до моделей використання.

Я погоджуюся з методом MusiGenesis такого підходу, тому що це те, що я використовую на своєму веб-сайті, і він працює пристойно добре. Процес невидимого CAPTCHA - це гідний спосіб блокування більшості сценаріїв, але це все ще не заважає автору сценаріїв зворотної інженерії вашого методу і "підробляти" значення, які ви шукаєте в JavaScript.

Я скажу, що найкращим методом є 1) встановити користувача, щоб можна було блокувати, коли він поганий, 2) визначити алгоритм, який виявляє типові шаблони проти нетипових моделей використання веб-сайту та 3) блокувати цього користувача відповідно.


Чому бот не може зареєструвати OpenID? Зловмиснику просто потрібно створити власного видавця OpenID.
rjmunro

Так @rjmunro, і це гарна річ. Складність Інтернету - це ідентифікація анонімних користувачів. Якщо бот реєструє OpenID і ви ідентифікуєте цього користувача OpenID як бота, ви можете вимкнути його. Це вже не анонімне. Це не заважає декільком реєстраціям одного постачальника, але ви можете вимкнути цього постачальника, щоб дозволити ботів. Мета - зняти анонімність Інтернету якнайкраще.
jwendl

10

У мене є кілька ідей про те, що я люблю ділитися з вами ...

Перша ідея уникнути OCR

Капта, у якої є якась прихована частина від користувача, але повне зображення - це два коду разом, тому програми OCR та ферми captcha зчитують зображення, що включають видиму та приховану частину, намагаються розшифрувати їх обоє і не вдасться подати. .. - У мене все готове виправити це і працювати в Інтернеті.

http://www.planethost.gr/IdeaWithHiddenPart.gif

Друга ідея зробити її легшою

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

http://www.planethost.gr/ManyWords.gif

Третя ідея із зображеннями

Те саме, що і попередні, але з дивами та текстами чи маленькими значками. Користувач повинен натиснути лише на правильний один div / letter / image, що б не було.

http://www.planethost.gr/ArrayFromDivs.gif

Заключна ідея - я називаю це CicleCaptcha

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

http://www.planethost.gr/CicleCaptcha.gif

Будь-які критики вітаються.


У Re-captcha є текст для виступу для його слів. Це може сказати вам, де натиснути.
Роберт П

@RobertP Клацання при погіршенні зору - це схоже на зйомку, коли у вас зору з вадами зору ... "Просто націліться на голову".

8
@pst "Трохи ліворуч. Правильно, трохи більше. Добре. Добре. Тепер назад. Вгору. Ні, в інший бік. Так, у вас є це. Ще трохи. Так. Ще трохи більше. Майже там. Майже там ... майже ... майже ... КАПЧА !!! "
Роберт П


7

Нещодавно я почав додавати тег із іменем та ідентифікатором, встановленим на "message". Я встановив його приховано за допомогою CSS (дисплей: немає). Спам-боти бачать його, заповнюють його та подають форму. Сторона сервера, якщо текстові області з іменем id заповнені, я позначаю публікацію як спам.

Інша методика, над якою я працюю, випадковим чином створює імена та ідентифікатори, де деякі - це перевірка спаму, а інші - регулярні поля.

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


Використання css для приховування форми форми та твердження, що воно порожнє, працювало і для мене. Не дурний доказ, але це хороший варіант.
Кріс

Техніка 1: Honeypot
kevinji

6

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

Досить просто, і навколо цього буде не важко кодувати. Тут я бачу дві загрози:

  1. випадкові спам-боти та спам-боти, які можуть їх створити; і
  2. боти, створені для гри Stack Overflow

За допомогою простої арифметики ви можете перемогти загрозу №1, але не загрозу №2.


Я б припустив, що аналізатор буде значно простішим, ніж написання кракера зображення-captcha. Пам'ятайте, що найпростіша річ, яку ви пропонуєте користувачам, - це те, що спамбот, ймовірно, використовуватиме. На жаль, капташ без JS повинен бути складніше.
stalepretzel

5

Що робити, якщо ви використовували комбінацію ідей із капчу (виберіть будь-яку з них - або виберіть одну з них випадковим чином):

  • ASCII текстова капта: // (_) //
  • математичні пазли: що таке 7 мінус 3 рази 2?
  • дрібниці: що смачніше, жаба чи ескімо?

з додаванням розміщення точно такої самої капчу в css прихованому розділі сторінки - ідея сотника. Таким чином, у вас було б одне місце, де ви очікували б правильної відповіді, і інше, де відповідь має бути незмінною.


1
"Що смачніше на смак" є досить суб'єктивним, на мою думку. Люди, які виходять на кінцівку щодо смаку, трактуватимуться як бот. Більше того, лише з двома відповідями шанс перейти до бота - 50%.
pimvdb

Щоправда щодо суб'єктивної частини, але конкретне було з оригінального питання. Моя суть полягала в тому, щоб використовувати всі три (або кілька) типів випадковим чином. Крім того, шанс пройти лише 50%, якщо відповідь є множинним вибором. Якщо у вас є користувач, введіть слово, не вказуючи можливі відповіді у списку, боту стає набагато складніше вибрати правильні слова у питанні / відповіді.
TheEmirOfGroofunistan

5

Я мав напрочуд гарні результати за допомогою простого поля "Залишити це поле порожнім:". Здається, боти заповнюють усе, особливо якщо ви називаєте поле чимось на зразок "URL". У поєднанні зі строгою референтною перевіркою, я ще не мав бота, щоб його пройти.

Не забудьте про доступність тут. Капчі, як відомо, непридатні для багатьох людей, які використовують зчитувачі екрану. Прості математичні проблеми або дуже дрібниці (мені сподобалось питання "якого кольору небо") набагато привітніші для користувачів із порушеннями зору.


5

Простий текст звучить чудово. Підкупіть громаду, щоб виконати роботу! Якщо ви вважаєте, як я це вважаю, що точки репрезентації SO вимірюють прихильність користувача до того, щоб допомогти сайту досягти успіху, цілком розумно запропонувати точки репутації, щоб захистити сайт від спамерів.

Запропонуйте +10 репутації за кожен внесок простого запитання та набору правильних відповідей. Питання повинно бути достатньо далеко (редагувати відстань) від усіх існуючих питань, і репутація (і питання) повинна поступово зникати, якщо люди не зможуть відповісти на нього. Скажімо, якщо відсоток відмов у правильних відповідях перевищує 20%, то подавець втрачає один бал репутації за неправильну відповідь, максимум до 15. Отже, якщо ви подаєте невірне запитання, ви отримаєте +10 зараз, але з часом ви отримаєте нетто -5. Або, можливо, є сенс попросити вибірку користувачів проголосувати, чи хороша це питання captcha.

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


5

Зробіть запит AJAX для криптографічного поняття до сервера. Сервер повертає відповідь JSON, що містить nonce, а також встановлює cookie, що містить значення nonce. Обчисліть хеш SHA1 значень у JavaScript, скопіюйте значення у приховане поле. Коли користувач розміщує форму, тепер він надсилає файли cookie назад із значенням nonce. Обчисліть хеш SHA1 нонса з файлу cookie, порівняйте його зі значенням у прихованому полі та переконайтеся, що ви генерували це за останні 15 хвилин (запам’ятовування це добре для цього). Якщо всі ці перевірки пройдуть, опублікуйте коментар.

Ця техніка вимагає, щоб спамер сідав і з'ясовував, що відбувається, і як тільки вони це робитимуть, їм все одно доведеться запускати кілька запитів і підтримувати стан файлів cookie, щоб отримати коментар. Плюс вони завжди бачать Set-Cookieзаголовок, лише якщо вони розбирають і виконують JavaScript в першу чергу і роблять запит AJAX. Це далеко, набагато більше роботи, ніж прагне пройти більшість спамерів, тим більше, що робота стосується лише одного сайту. Найбільшим недоліком є ​​те, що будь-хто із відключеним JavaScript або відключеним файлом cookie стає позначений як потенційний спам. Що означає, що черги на помірність все ще є хорошою ідеєю.

Теоретично це можна кваліфікувати як безпеку через невідомість, але на практиці це чудово.

Я ніколи не бачив, щоб спамер намагався порушити цю техніку, хоча, можливо, раз на пару місяців я отримую вручну тематичний запис спаму, і це трохи неприємно.


5

1) Розв’язувачі людини

Всі згадані тут рішення вирішуються підходом до вирішення проблем людини. Професійний спамбот підтримує сотні з'єднань, і коли він не може самостійно вирішити CAPTCHA, він передає знімок екрана віддаленим людям.

Я часто читаю, що люди, що вирішують CAPTCHA, порушують закони. Ну, це пишуть ті, хто не знає, як працює ця (спам) галузь.
Людські вирішувачі не взаємодіють безпосередньо з сайтами, які CAPTCHA вирішують. Вони навіть не знають, з яких сайтів були взяті та відправлені CAPTCHA. Мені відомо про десятки (якщо не сотні) компаній та / і веб-сайтів, що пропонують послуги людських рішень, але не одну, що стосується прямої взаємодії з дошками.
Останні не порушують жодного закону, тому рішення CAPTCHA є повністю законними (і офіційно зареєстрованими) бізнес-компаніями. Вони не мають злочинних намірів і можуть, наприклад, використовуватися для дистанційного тестування, розслідування, перевірки концепцій, прототипу тощо.

2) Контекстний спам

AI (Artificial Intelligent) боти визначають контексти та підтримують контекстно-чутливі діалоги в різний час з різних IP-адрес (у різних країнах). Навіть автори блогів часто не розуміють, що коментарі від ботів. Я не буду вникати в багато деталей, але, наприклад, боти можуть обробляти людські діалоги, зберігати їх у базі даних, а потім просто використовувати їх повторно (словосполучення за фразою), щоб вони не були розпізнані як спам програмним забезпеченням або навіть людьми.

Відповідь, яка найбільше голосує, говорить:

  • * "Теорія полягає в тому, що:
    • Спам-бот не підтримуватиме JavaScript і надсилатиме те, що бачить
    • Якщо бот підтримує JavaScript, він подасть форму негайно
    • Перед публікацією коментатор прочитав принаймні частину сторінки перед публікацією "*

а також відповідь сотника, і більшість відповідей у ​​цій темі просто невірно.
Смію сказати, що це жертви, приречені на жертви

Більшість спам-ботів працюють за допомогою локальних та віддалених JavaScript (виправлених та керованих) браузерів з різних IP-адрес (різних країн), і вони досить розумні, щоб обійти медові пастки та медові горщики.

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

3) Концептуально новий підхід

Вибачте, цю частину я видалив як осад


1
Ви окреслили проблему майже кожної відповіді на цю тему. Усі вони були б швидко переможені, якби не були ексклюзивними на крихітному веб-сайті. Якщо будь-який з них використовувався на великому веб-сайті або на декількох невеликих веб-сайтах (скажімо, як плагін Wordpress), вони будуть переможені за день. Вони насправді не КАПЧА, а щасливі випадки безпеки через незрозумілість. Ви також маєте рацію; сучасний спам ставить коментарі, які навіть я не можу визнати спамом. Я відмовився від CAPTCHA і замість цього використовую Mollom. Краудсорсинг-спам - краще підхід.
День

5

Насправді це може бути ідея встановити капчу, пов'язаний з програмуванням. Наприклад:

Captcha

Існує можливість, щоб хтось створив перевірку синтаксису, щоб обійти це, але набагато більше роботи, щоб обійти капчу. Однак ви отримуєте ідею мати відповідну капчу.


5
За винятком: Чи знаєте ви, що відповідь на прикладне запитання (якщо хтось спіткнеться на це пізніше, а зображення не існує: "Скільки помилок синтаксису PHP в $var == array(1 = 'one');;") 1, ні 3? (Серйозно. Спробуйте $var == array(1 => 'one');;) ^ _ ~
pinkgothic

Гей, вже досить довго я не пам'ятаю, щоб зробити це зображення. Ви, звичайно, маєте рацію, і я не думаю, що це було б дуже добре як капча - але, можливо, як вимога вступу на форум програмування.
Росс

4

Я мушу визнати, що я не маю досвіду боротьби зі спам-ботами і не знаю, наскільки вони складні. Це означає, що в статті jQuery я нічого не бачу, що не вдалося виконати виключно на сервері.

Щоб перефразовувати резюме зі статті jQuery:

  1. При генерації контактної форми на сервері ...
  2. Візьміть поточний час.
  3. Поєднайте цю мітку часу та секретне слово та створіть хеш-символів на 32 символи та збережіть його як файл cookie у веб-переглядачі відвідувача.
  4. Зберігайте часову позначку хеша або "маркер" у прихованому тезі форми.
  5. Коли форма буде розміщена назад, значення часової позначки буде порівняно з 32-символьним "жетоном", що зберігається у файлі cookie.
  6. Якщо інформація не збігається або відсутня, або якщо позначка часу занадто стара, припиніть виконання запиту ...

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.