Практические подходы CAPTCHA без изображений?
Похоже, мы добавим поддержку CAPTCHA в Stack Overflow. Это необходимо для предотвращения действий ботов, спамеров и других вредоносных скриптов. Мы только хотим, чтобы люди публиковали или редактировали здесь!
Мы будем использовать JavaScript (jQuery) CAPTCHA в качестве первой линии защиты:
http://docs.jquery.com/Tutorials:Safer_Contact_Forms_Without_CAPTCHAs
Преимущество этого подхода в том, что для большинства людей CAPTCHA никогда не будет видна!
Тем не менее, для людей с отключенным JavaScript нам все еще нужен запасной вариант, и здесь он становится сложным.
Я написал традиционный элемент управления CAPTCHA для ASP.NET, который мы можем использовать повторно.
Однако я предпочел бы пойти с чем-то текстовым, чтобы избежать накладных расходов на создание всех этих изображений на сервере с каждым запросом.
Я видел такие вещи, как..
- ASCII текстовая капча:
\/\/(_)\/\/
- математические головоломки: что такое 7 минус 3 раза 2?
- пустяковые вопросы: что вкуснее, жаба или эскимо?
Может быть, я просто склоняюсь к ветряным мельницам здесь, но я хотел бы иметь менее ресурсоемкий, не основанный на изображениях <noscript>
совместимая капча, если это возможно.
Идеи?
103 ответа
Я недавно (не помню где) увидел систему, которая показала кучу картинок. Каждой из картинок был присвоен характер. Затем пользователю было предложено ввести символы для некоторых изображений, на которых показаны примеры какой-либо категории (автомобили, компьютеры, здания, цветы и т. Д.). Картинки и символы менялись каждый раз, а также категории для построения строки CAPTCHA.
Единственная проблема - более высокая пропускная способность, связанная с этим подходом, и вам нужно много изображений, которые классифицированы по категориям. Нет необходимости тратить много ресурсов на создание картинок.
Наш спам в форме был резко сокращен после внедрения метода "капчи", как упоминалось ранее. Я считаю, что мы не получили ничего с момента его реализации.
Мое предложение будет ASCII-капча, он не использует изображение, и это программист / geeky. Вот реализация PHP http://thephppro.com/products/captcha/ это платная. Существует бесплатная реализация PHP, но я не смог найти пример -> http://www.phpclasses.org/browse/package/4544.html
Я знаю, что они написаны на PHP, но я уверен, что вы умные ребята, создающие SO, можете "перенести" их на ваш любимый язык.
Я рекомендую вопросы пустяков. Не каждый может понять представления букв в ASCII, и математические вопросы с более чем одной операцией могут привести к путанице.
Многие из этих решений JavaScript работают с программами чтения с экрана? И изображения минус значимый атрибут alt, вероятно, нарушает WCAG.
У меня появилась идея, когда я увидел видео о вычислении людей (видео о том, как использовать людей для маркировки изображений в играх), чтобы создать систему кодирования. Можно использовать такую систему для маркировки изображений (возможно, для какой-то другой цели), а затем использовать статистику о тегах для выбора изображений, подходящих для использования капчи.
Скажите изображение, где>90% людей отметили его как "кошка" или "небоскреб". Затем можно представить изображение, запрашивая наиболее очевидную особенность изображения, которая будет доминирующей меткой для изображения.
Это, вероятно, выходит за рамки SO, но кто-то может найти это интересной идеей:)
Привязка к чату была бы забавным способом сделать капчу. Этакий живой тест Тьюринга. Очевидно, это будет зависеть от кого-то, кто онлайн, чтобы задать вопрос.
Вы не только хотите, чтобы люди отправляли сообщения. Вы хотите людей, которые могут обсуждать темы программирования. Таким образом, вы должны иметь капчу мелочи с такими вещами, как:
Что означает следующее объявление функции C: char *(*(**foo [][8])())[];
?
знак равно
Один из способов, которым я знаю, чтобы отсеять ботов, - это сохранить ключ в куки пользователя, и если ключ или куки не существуют, предположить, что они бот, и проигнорировать их или использовать образ CAPTCHA. Это также действительно хороший способ предотвратить создание множества сеансов / отслеживаний для ботов, которые могут добавить много шума к вашей БД или снизить производительность вашей системы.
Как насчет просто проверить, включен ли JavaScript?
Любой, кто использует этот сайт, обязательно включит его. И из того, что говорят люди, у спам-ботов не будет включен JavaScript.
У меня есть пара решений, одно из которых требует JavaScript, а другое нет. Обе сложнее победить, чем то, что 7 + 4, но они не так строги для постеров, как reCaptcha. Я придумал эти решения, так как мне нужно иметь капчу для AppEngine, которая представляет собой более ограниченную среду.
В любом случае вот ссылка на демо: http://kevin-le.appspot.com/extra/lab/captcha/
Одним из вариантов будет внеполосная связь; сервер может отправить пользователю мгновенное сообщение (или SMS-сообщение?), которое он / она должен затем ввести в поле капчи.
Это накладывает на пользователя требование "или / или" - либо вы должны включить JavaScript, либо вы должны войти в выбранную вами службу обмена мгновенными сообщениями. Хотя он может быть не таким гибким, как некоторые другие решения выше, он будет работать для подавляющего большинства пользователей.
Те, у кого есть права на редактирование, не стесняются добавлять в "за" и "против", а не отправлять отдельный ответ.
Плюсы:
- Доступно: многие IM-клиенты поддерживают чтение входящих сообщений. Некоторые веб-клиенты будут работать с программами чтения с экрана.
Минусы:
- Пользователи с отключенным Javascript теперь зависят от времени работы еще одной службы, поверх OpenID.
- Боты будут вызывать дополнительное использование ресурсов сервера (отправка внеполосных сообщений), если не будут внедрены дополнительные средства защиты.