Практические подходы CAPTCHA, не основанные на изображениях?

Я придумал решение, которое работает, но не красиво. Я использовал пакет https://github.com/hzdg/django-enumfields , чтобы помочь с этим.

Я создал свое собственное поле формы:

class EnumChoiceField(enumfields.forms.EnumChoiceField):
    def __init__(self, enum, *, coerce=lambda val: val, empty_value='', **kwargs):
        if isinstance(enum, six.string_types):
            self.enum = import_string(enum)
        else:
            self.enum = enum

        super().__init__(coerce=coerce, empty_value=empty_value, **kwargs)

И использовал его в моей форме Django. Затем в моем собственном AppConfig я сделал это:

class CoreAppConfig(AppConfig):
    name = 'myapp.core'

    def ready(self):
        registry = get_global_registry()

        @convert_form_field.register(EnumChoiceField)
        def convert_form_field_to_enum(field: EnumChoiceField):
            converted = registry.get_converted_field(field.enum)
            if converted is None:
                raise ImproperlyConfigured("Enum %r is not registered." % field.enum)
            return converted(description=field.help_text, required=field.required)

И, наконец, в моей схеме:

UnitEnum = Enum.from_enum(Unit)
get_global_registry().register_converted_field(Unit, UnitEnum)

Мне действительно это не нравится, но я не мог придумать лучшего способа чтобы справиться с этим. Я столкнулся с этой идеей при поиске другой проблемы с графеновым джанго здесь https://github.com/graphql-python/graphene-django/issues/481#issuecomment-412227036 .

Я чувствую, что у есть , чтобы быть лучшим способом сделать это.

318
задан 9 revs, 8 users 45% 31 March 2012 в 22:23
поделиться

92 ответа

Если основным вопросом с не использованием изображений для капчи является загрузка ЦП создания тех изображений, это может быть хорошая идея выяснить способ создать те изображения, когда загрузка ЦП "легка" (собственно говоря). Нет никакой причины, почему капча должна быть сгенерирована в то же самое время, когда форма сгенерирована. Вместо этого Вы могли вытянуть от большого кэша капчей, генерировал последнюю загрузку сервера времени, было "легко". Вы могли даже снова использовать кэшируемые капчи (в случае, если существует странный скачок в представлениях формы), пока Вы не повторно создаете набор новых в следующий раз, когда загрузка сервера "легка".

2
ответ дан spotcatbug 23 November 2019 в 01:00
поделиться

Простая математика не является ответом - спаммер не должен даже писать простой синтаксический анализатор. Google сделает это для них даже при использовании слов вместо числа, таким образом, это просто требует быстрого поиска на Google, и это сделано.

Это может сделать текст к числовым преобразованиям легко также .

, кажется, существует своего рода ошибка в SO's, представляющем, поскольку это только показывает первую ссылку, когда это отправляется, даже при том, что предварительный просмотр работает правильно. Вторая ссылка - переходят к Google и поиску "1 * сорок два"

2
ответ дан 2 revs 23 November 2019 в 01:00
поделиться

Не наиболее усовершенствованное оружие против спама, но эй, Microsoft подтвердила:

Nobot-управление (часть AjaxControlToolkit).

NoBot может быть протестирован путем нарушения любого из вышеупомянутых методов: регистрация назад быстро, регистрация назад много раз или отключение JavaScript в браузере.

Демонстрация:

http://www.asp.net/AJAX/AjaxControlToolkit/Samples/NoBot/NoBot.aspx

2
ответ дан Stefan 23 November 2019 в 01:00
поделиться

Если Вы хотите основанный на ASCII подход, смотрите на интеграцию FIGlet. Вы могли сделать некоторые пользовательские шрифты и сделать некоторую рандомизацию выбора шрифта на символ для увеличения entrophy. Кернинг делает текст более визуально приятным и немного более трудным для бота перепроектировать.

, такие как:

    ______           __     ____               _____          
   / __/ /____ _____/ /__  / __ \_  _____ ____/ _/ /__ _    __
  _\ \/ __/ _ `/ __/  '_/ / /_/ / |/ / -_) __/ _/ / _ \ |/|/ /
 /___/\__/\_,_/\__/_/\_\  \____/|___/\__/_/ /_//_/\___/__,__/ 
2
ответ дан spoulson 23 November 2019 в 01:00
поделиться

Это будет per-sign-up и не по почте, правильно? Поскольку это просто уничтожило бы сайт, даже с автоматизацией jQuery.

2
ответ дан Joel Coehoorn 23 November 2019 в 01:00
поделиться

Вы когда-либо планируете предоставить API Stackoverflow, который позволил бы управление вопросами/ответами программно? Если так, как основанная на капче защита собирается вписаться в это?

При обеспечении просто богатого интерфейса только для чтения с помощью лент RSS Atom позволил бы людям создавать некоторый интересный smart-clients/tools для организации и поиска обширного содержания, которое является Stackoverflow; я видел наличие возможности за пределами веб-интерфейса, чтобы спросить и/или ответить на вопросы, а также голосование по содержанию как чрезвычайно полезные. (Хотя это не может соответствовать основанной на рекламе модели дохода.)

я предпочел бы видеть, что Stackoverflow использует контрольный подход эвристики, который пытается обнаружить злонамеренное действие и заблокировать незаконного пользователя, но может понять, как использование КАПЧИ может быть более простым подходом с Вашими данными выпуска, подходящими скоро.

2
ответ дан Oppositional 23 November 2019 в 01:00
поделиться

Я описал класс PHP, который позволяет Вам принять решение использовать определенный класс Вопроса о Капче (математика, именование, противоположности, завершение), или рандомизировать, какой тип используется. Это вопросы, на которые могло ответить большинство англоязычных детей. , Например:

  1. Математика: 2+5 = _
  2. Именование: животным в этом изображении являются противоположности ____
  3. : противоположностью счастливых является завершение ___
  4. : корова идет _____
2
ответ дан lo_fye 23 November 2019 в 01:00
поделиться

Даже с представителем, должен все еще быть НЕКОТОРЫЙ тип капчи, для предотвращения злонамеренного нападения сценария.

2
ответ дан Adam 23 November 2019 в 01:00
поделиться

Если Вы склоняетесь к решению для вопроса/ответа в прошлом, я представил пользователей с выпадающим из 3-5 случайных вопросов, которые они могли выбрать из и затем ответить, чтобы доказать, что они были человеческими. Список был отсортирован по-другому на каждой загрузке страницы.

2
ответ дан Chuck 23 November 2019 в 01:00
поделиться

Без фактической КАПЧИ как Ваш первый линия обороны, не Вы все еще уязвимый для спаммеров, пишущих сценарий браузера (тривиальное использование VB и IE)? Т.е. загрузите страницу, переместитесь по DOM, нажмите кнопку отправки, повторитесь...

2
ответ дан Michael Pryor 23 November 2019 в 01:00
поделиться

Вы посмотрели Waegis?

"Waegis является веб-сервисом онлайн, который представляет открыть API (Application Programming Interface). Это получает входящие данные через свои методы API и применяет быструю проверку и определяет спам и законное содержание вовремя. Это тогда возвращает результат клиенту определить, является ли содержание спамом или нет".

2
ответ дан Jon Galloway 23 November 2019 в 01:00
поделиться

У меня была загрузка проблем спама о сайте phpBB 2.0, который я выполнял некоторое время назад (сайт теперь обновлен).

я установил пользовательскую модификацию капчи, которую я нашел на pbpBB форумах, которые работали хорошо сроком на время. Я нашел, что действительное решение комбинировало это с дополнительными 'необходимыми' полями [на странице создания учетной записи].
я добавил; Местоположение и Размещение (приземленный, все же удобный для знания).
бот никогда не пытался заполнить их, все еще предполагая, что капча была точкой сбоя для каждой попытки.

2
ответ дан Tyronomo 23 November 2019 в 01:00
поделиться

Mixriot.com использует КАПЧУ ASCII-творчества (не уверенный, если это - сторонний инструмент.)

 OooOOo  .oOOo.  o   O    oO   
 o       O       O   o     O   
 O       o       o   o     o   
 ooOOo.  OoOOo.  OooOOo    O   
      O  O    O      O     o   
      o  O    o      o     O   
 `OooO'  `OooO'      O   OooOO
3
ответ дан 2 revs, 2 users 89% 23 November 2019 в 01:00
поделиться

Как насчет основанной на CSS КАПЧИ?

<div style="position:relative;top:0;left:0">
<span style="position:absolute;left:4em;top:0">E</span>
<span style="position:absolute;left:3em;top:0">D</span>
<span style="position:absolute;left:1em;top:0">B</span>
<span style="position:absolute;left:0em;top:0">A</span>
<span style="position:absolute;left:2em;top:0">C</span>
</div>

Это отображает "ABCDE". Конечно, все еще легко обойти использование пользовательского бота.

3
ответ дан 2 revs, 2 users 91% 23 November 2019 в 01:00
поделиться

университет reCAPTCHA спонсировал и помогает оцифровать книги.

Мы генерируем и проверяем искаженные изображения, таким образом, Вы не должны запускать дорогостоящие программы формирования изображения.

3
ответ дан Brawndo 23 November 2019 в 01:00
поделиться

Кто говорит, что Вы имеете к , создают все изображения на сервере с каждым запросом? Возможно, Вы могли иметь статический список изображений или вытянуть их от flickr. Мне нравится, "нажимают на котенка" идея капчи. http://www.thepcspy.com/kittenauth

3
ответ дан Lance Fisher 23 November 2019 в 01:00
поделиться

Кто-то также предлагает библиотеку Raphael JavaScript, которые, по-видимому, позволяют Вам привлечь клиент во всех популярных браузерах:

http://dmitry.baranovskiy.com/raphael/

.. но это точно не работало бы с моим <noscript> случай, теперь будет он?:)

4
ответ дан 2 revs, 2 users 80% 23 November 2019 в 01:00
поделиться

Я сделал бы простую основанную на времени КАПЧУ.

JavaScript включил: время Контрольно-пропускного пункта минус время загрузки, больше, чем HUMANISVERYFASTREADER.

JavaScript отключил: Запрос HTTP Времени начинает минус время концы ответа HTTP (хранилище на сессии или скрытое поле) больше, чем HUMANISVERYFASTREADER плюс времена NETWORKLATENCY 2.

В любом случае, если это возвращает true затем, Вы перенаправляете к КАПЧЕ изображения. Это означает, что большую часть времени люди не должны будут использовать КАПЧУ изображения, если они не очень быстрые читатели, или бот спама установлен задержать ответ.

Примечание, что при использовании скрытого поля я использовал бы случайное идентификационное название его в случае, если бот обнаруживает, что оно используется в качестве КАПЧИ и пытается изменить значение.

Другой совершенно другой подход (который работает только с JavaScript) должен использовать jQuery, Поддающийся сортировке функция, чтобы позволить пользователю сортировать несколько изображений. Возможно, маленькое 3x3 загадка.

4
ответ дан 3 revs, 2 users 74% 23 November 2019 в 01:00
поделиться

Не техническое, а теоретическое решение.

1. Дается слово или звук. «Переместите мышь в верхний левый угол экрана и нажмите на оранжевую кнопку» или «Нажмите здесь, а затем нажмите здесь» (требуется многоэтапный ответ) Когда задачи выполнены, проблема решена. Выберите объекты, которые уже находятся на странице, чтобы они нажимали. Выполните хотя бы два действия. 1242 Надеюсь, это поможет.

2
ответ дан 23 November 2019 в 01:00
поделиться

Я думаю, что проблема с текстовым подходом капчи заключается в том, что текст можно проанализировать и, следовательно, ответить на него.

Если ваш сайт популярен (например, Stackoverflow) и люди, которые любят писать код, держатся на нем (как и Stackoverflow), есть вероятность, что кто-то воспримет «взломать капчу» как вызов, который легко решить с помощью простого javascript + greasemonkey.

Так, например, подход скрытых красочных букв ], предложенный где-то в потоке (крутая идея, действительно идея), может быть легко сломан простым анализом следующей строки примера:

<div id = "captcha">
 <span class = "red">s</span>
 asdasda
 <span class = "red">t</span>
 asdff
 <span class = "red">a</span>
 jeffwerf
 <span class = "red">c</span>
 sdkk
 <span class = "red">k</span>
</div>

То же самое, разобрать это легко:

3 + 4 = ?

Если он следует схеме (x + y) или тому подобное.

Аналогично, если у вас есть ряд вопросов ( какого цвета оранжевый? , сколько дварфов окружают белоснежный? ),если у вас нет тысяч сотен из них, можно выбрать около 30, создать хэш вопросов и ответов и заставить бот-скрипт перезагружать страницу, пока не будет найден один из 30.

3
ответ дан 23 November 2019 в 01:00
поделиться

Теоретическая идея фильтра капчи. Задайте вопрос пользователю, на который сервер может как-то тривиально ответить, и пользователь тоже может ответить. Общий ответ становится своего рода открытым ключом, известным как пользователю, так и серверу.

Пример, связанный с переполнением стека:

Сколько очков репутации у пользователя XYZ?

Подсказка: посмотрите сбоку от экран для этой информации или перейдите по этой ссылке. Пользователь мог быть случайно выбран из числа известных пользователей, переполненных стеком.

Более общий пример: Где ты живешь? Какие погодные условия были в 9:00 в субботу, где вы живете? Подсказка: используйте погоду Yahoo и укажите влажность и общие условия.

Затем пользователь вводит свой ответ

Сиэтл Небольшая облачность, влажность 85%

Компьютер подтверждает, что это действительно были те погодные условия в Сиэтле в то время.

Ответ уникален для пользователя, но сервер имеет способ найти и подтвердить этот ответ.

. Типы вопросов могли быть разными. Но идея состоит в том, что вы выполняете некоторую обработку комбинации фактов, которые человек должен был бы найти, а сервер мог бы легко найти. Этот процесс состоит из двух частей и требует определенного уровня взаимопонимания. Это своего рода испытание на обратное вращение. Попросите человека доказать, что он может предоставить вычислимый фрагмент данных, но для получения вычислимых данных требуются человеческие знания.

Другая возможная реализация. Как вас зовут и когда вы родились?

Человек даст известный ответ, а компьютер сможет найти информацию в базе данных.

Возможно, база данных может быть заполнена ботом, но ему потребуется некоторый интеллект, чтобы собрать соответствующие факты воедино. База данных или справочная таблица на стороне сервера может быть систематически очищена от очевидных свойств, подобных спаму.

Я уверен, что есть недостатки и детали, которые необходимо проработать при реализации. Но концепция кажется разумной. Пользователь предоставляет комбинацию фактов, которые сервер может найти, но сервер может контролировать, какие комбинации следует запрашивать. Комбинации могут быть рандомизированы, и сервер может использовать различные стратегии для поиска общего ответа. Настоящая выгода состоит в том, что вы просите пользователя предоставить своего рода профилирование и раскрытие себя в своем ответе. Из-за этого ботам становится все труднее работать систематически. Группа компьютеров начинает использовать одни и те же ответы на многих серверах и в формах капчи, таких как

Я робот родился в 1972 году в 15:45.

Затем такой ответ может быть профилирован и использован всей сетью для блокировки боты, эффективно делают автоматизацию бесполезной после нескольких итераций.

Когда я думаю об этом больше, было бы интересно реализовать базовый тест на понимание прочитанного для комментирования сообщений в блогах. После окончания сообщения в блоге автор мог задать вопрос своим читателям. Вопрос может быть уникальным для каждого сообщения в блоге, и он будет иметь дополнительное преимущество, требуя, чтобы пользователи действительно прочитали, прежде чем комментировать. Можно написать простой вопрос в конце сообщения с ответами, хранящимися на стороне сервера, а затем получить массив бессмысленных вопросов для добавления базы данных. Ответ на стороне сервера (ложь, нет)

Это сообщение было о капчах? Ответ на стороне сервера (правда, да)

Это был пост о Майкле Джексоне? Ответ на стороне сервера (ложь, нет)

Кажется полезным иметь несколько вопросов, представленных в случайном порядке, и сделать порядок значимым. например, приведенное выше будет = нет, да, нет. Перемешайте порядок и получите набор бессмысленных вопросов с ответами «нет» и «да».

3
ответ дан 23 November 2019 в 01:00
поделиться

Некоторые здесь заявили о решениях, которые никогда не были нарушены бот. Я думаю, проблема в том, что вы также никогда не знаете, сколько людей не смогли пройти через «CAPTCHA».

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

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

И, наконец, я хочу вернуться к решениям на основе изображений: вам не нужно создавать новый образ каждый раз время. Вы можете заранее создать их большое количество (может быть, несколько тысяч?), А затем постепенно менять этот набор с течением времени. Например, каждые 10 минут или каждый час удаляйте 100 самых старых изображений и заменяйте их набором новых. По каждому запросу случайным образом выберите CAPTCHA из общего набора.

Конечно, это не выдержит направленной атаки, но, как здесь много раз упоминалось ранее, большинство CAPTCHA не выдержит. Однако этого будет достаточно, чтобы остановить случайного бота.

4
ответ дан 23 November 2019 в 01:00
поделиться

Ajax Fancy Captcha на основе изображения, за исключением того, что вам нужно перетаскивать на основе распознавания формы вместо ввода букв / цифр, содержащихся на изображении.

2
ответ дан 23 November 2019 в 01:00
поделиться
[
] [

]Пожалуйста, позвоните xxxxx xxxxxxx, и давайте поговорим о погоде на вашем месте.[

] [
] [

]Но, ну, в наши дни слишком быстрые и слишком массово ориентированные на прибыль, что даже один телефонный звонок с выбранным нами поставщиком услуг был бы слишком дорогим для него (время дорого).[

] [

]Большую часть времени мы соглашались разговаривать с машинами.[

] [

]Печальные времена...[

].
3
ответ дан 23 November 2019 в 01:00
поделиться

Как насчет того, чтобы сделать CAPTCHA, в котором есть буквы разных цветов, и попросить пользователя ввести только те, которые определенного цвета?

3
ответ дан 23 November 2019 в 01:00
поделиться

Я думаю, что мы должны предположить, что этот сайт подвергнется предназначенным нападениям регулярно, не только универсальным дрейфующим ботам. Если это станет первым хитом для поисков программистов, это потянет партия из огня.

мне, который подразумевает, что любая система КАПЧИ не может вытянуть из повторяющегося списка вопросов , который человек может вручную подать в бота, в дополнение к тому, чтобы быть неотгадываемым ботами.

1
ответ дан Nathan Long 23 November 2019 в 01:00
поделиться

Mollom - другой сервис типа askimet, который может представлять интерес. От парней, которые записали, drupal / выполняют acquia.

1
ответ дан jimg 23 November 2019 в 01:00
поделиться

Возможно, сообщество может придумать некоторые хорошие основанные на тексте КАПЧИ?

Мы можем тогда придумать хороший список на основе тех с большинством голосов.

1
ответ дан 2 revs 23 November 2019 в 01:00
поделиться

Наш спам формы был решительно сокращен после реализации метода капчи ловушки, как упомянуто ранее. Я полагаю, что мы не приняли никого начиная с реализации его.

1
ответ дан Mike Wills 23 November 2019 в 01:00
поделиться

Ответ на исходный вопрос:

  • ASCII плох: Я должен был смотреть искоса для нахождения "WOW". Это даже корректно? Это мог быть "VVOVV" или безотносительно;
  • Очень простая арифметика хороша. Слепые люди будут в состоянии ответить. (Но поскольку Jarod заявил, остерегайтесь приоритета оператора.) Я заключаю, что кто-то мог записать синтаксический анализатор, но он делает спам более дорогостоящим.
  • Мелочи в порядке, но необходимо будет записать каждому из них:-(

, я видел изображения животных [что это?]. Голоса за комиксы используют изображение символа с их именем, написанным где-нибудь в изображении [тип на имя]. Невозможный проанализировать, не хорошо для слепых людей.

у Вас мог быть аудио буквенно-цифровой индикатор чтения нейтрализации (те же буквы и числа, которые Вы имеете в капче).

Заключительная линия обороны: сделайте спам легким сообщить (один щелчок) и легкий удалить (один экран резюме, чтобы проверить, что это - учетная запись спама, с последними десятью отображенными сообщениями, один щелчок для удаления учетной записи). Это все еще дорого временем, все же.

1
ответ дан 2 revs 23 November 2019 в 01:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: