Pull to refresh

Comments 96

что-то имеете против хабра? =)
(да-да, если кто не заметил, для логина на хабр нужно вчитываться к капчу)
UFO landed and left these words here
Предлагать-то предлагали, но вот только никто из предлагающих не подумал о том, что от перебора паролей к разным аккаунтам это не поможет: нас уже неоднократно пытались поломать ботом, который подбирает не по 1000 паролей к одному аккаунту, а к 1000 аккаунтам пробует один и тот же пароль. При этом действует он через прокси, так что в большинстве случаев отличить его от обычных пользователей крайне сложно.
Включать капчу при N любых неуспешных попыток?
Для одного IP? А если используют прокси, то для кого включать?
Для всех. После 5 попыток и например на 3 часа.
Может я немного недопонял Вас, но смотрите получается:
1 прокси = попытка залогинится паролем qwerty у пользователя 1
2 прокси = попытка залогинится паролем qwerty у пользователя 2
3 прокси = попытка залогинится паролем qwerty у пользователя 3
4 прокси = попытка залогинится паролем qwerty у пользователя 4
и т.д.

Как отличить в данной ситуации бота? Никак…

5 прокси = попытка залогинится паролем qwerty у пользователя 5
включаем капчу

Просыпайтесь уже!
Блин, вроде понял…
Будем проверять что кто- с одним и тем же пассом «йцукен» ломится в аккаунты. И в очередную энную попытку логина с этим пасом «йцукен» выводить капчу.
Так?
точно!
Только энную неуспешную попытку логина с этим пасом «йцукен»

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

Дальше увидев бота, легко можно увидеть его паттерн и «выключить» его нафиг — добавить правило ДО всех проверок и давать отлуп по нему. Правило через неделю можно выкинуть.
Если не лень можно первичную проверку и даже реакцию автоматизировать.

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

Когда-то давно я админил очень крупный порно сайт, который долбили постоянно, иногда по 3-5 ботов одновременно. И подбирали пароль, не смотря ни на капчу, ни на фильтрацию ботов, где-то раз в месяц-два. А еще бывают придурошные юзеры, которые раздают свои пароли.
Только энную неуспешную попытку логина в течении определенного времени
Можно сделать несколько порогов: 5 попыток — минута, 20 попыток — 10 минут.
> А еще бывают придурошные юзеры, которые раздают свои пароли.
bugmenot.net рулит! :)
К сожалению, не рулит. Идея хорошая, но то ли реализация подкачала, то ли юзеры такие…
Тогда капча будет висеть всегда, потому как как только она пропадает — боты берутся за своё.
боты через прокси подразумевают интеллект :) я думаю что 5 попыток за пару часов это 2 года перебора всех пользователей на каждый вариант пароля. По-моему бесполезность такого пути должна дойти раньше. :)
Кому включаем капчу?
Бот пойдёт через шестой прокси подбирать пароль к пользователю номер шесть.
Как Хабр узнает, что это именно бот через прокси, а не пользователь номер шесть самолично решил похоливорить после сытного обеда?

Как вариант, можно запоминать IP — если с этого IP когда-то логинился живой пользователь (прошедши через капчу), то капчу для этого IP отключаем до следующей неудачной попытки залогиниться.

Похожее можно делать для подсетей (для владельцев динамических IP) — если из какой-то подсети заходили живые пользователи и никогда не было попыток подбора, то для этой подсети капчу отключаем, до первой попытки подбора пароля (например, три неверных пароля к одному аккаунту или три одинаковых неверных пароля к разным аккаунтам).
Кому включаем капчу?
Хабру
хз. С одной стороны — да, кому-то мешает и давит на все, что под руку попадется. С другой — гораздо лучшая защита от ботов.
Я эту капчу видел 2 или 3 раза — хабр нас помнит =)
да вот именно, что её не заметить сложно ;)
Так а самое главное сколько уже отличных альтернатив капче придумано, не требующих участия пользователя, при этом обеспечивающие защиту на уровне капчи.
Назови хотя бы с полдесятка.
Для WordPress вроде как был интересный вариант. Пользователю попросту присваивалась кука при написании скажем коммента или поста. Причем поскольку у большинства спам-машин отключен JS то куки они принять не могли. Только вот не уверен что этот способ достаточно надежный.
1. js-сабмит (95% ботов не проходят)
2. скрытые поля (не hidden, а нормальные поля взятые в блок с display: none) (98% ботов их заполняют, потом проверяется если поле было заполненно значит бот)
3. временной hidden (например c name=«phone» и value=«текущее время») — если разница между временем в хиддене и текущем времене меньше 2 секунд или больше 24 часов — ты однозначно бот (спам бот может работать в таких условиях один день — потом 100% ботов идут лесом)
4. поле hidden создаещееся js-ом при событии onfocus любого из полей формы (value этого поля лучше менять каждый день, т.е. функция от даты)
5. Возвратный AJAX: отправка формы AJAX'ом в случае успешной отправки, возвращается сгенерированное число, которое отправляется ещё раз AJAX'ом назад — что является подтверждением сабмита (этот вариант супер-надежный, отсеивает 100% ботов, но кроме ботов идут лесом все пользователи с отключенным js и реализовать его не очень-то просто)

А вообще про это на хабре уже статей 5 писалось, самая кайфовая это перевод буржуйской статьи в которой рассматривается около 20 таких методов.
Напомни пожалуйста адрес этой статьи.
Пропустил видимо…
Как меня бесит, когда берут цифры с потолка (95% того не делают, 98% — этого)!
это не с потолка, буржуи провели много исследований, я обожаю как раз с конкретными цифрами статьи, я конечно написал приблизительно, а не точно как в исследованиях, но примерно все именно так… кстати недавно тут опять же была статья про исследование нашего соотечественника:
он взял обычный phpBB без капчи посчитал объем спама, с капчей — посчитал, а потом убрал капчу, но добавил такой код к форме:
/>


исследование показало, что защита таким методом значительно выше чем капчей, причем больше 90% ботов в качестве этого псевдо-названия компании писали google :)
<div style=«display: none;»&rt;
<input type=«text» name=«company» value="" /&rt;
</div&rt;
блин, ну короче я думаю кто хотел понял в чем суть… это как раз 2 метод из моего списка
Ссылки бы, ну да ладно, уже верю :-)
Восхитительно. 99% ботов идут лесом мгновенно, а 1% написан на джаваскрипте и натаскан конкретно на взлом паролей именно к этому сайта, и проходит все пять методов, и разламывает пароли перебором невозбранно.

Не надёжно.
Если уж именно этот сайт так популярен, так и быть, пусть на нем будет традиционная капча в виде картинки.
Если уж на то пошло, то надёжость капчи тем более преувеличена. В интернете есть сервисы которые разгадывают любую капчу. Так что строить защиту только на капче — не лучшее решение.
>> В интернете есть сервисы которые разгадывают любую капчу
Китайцы?
или индусы, или студенты.
некоторые такие сервисы заявляют что используют ocr
хотя судя по точности распознования — скорее всего врут и опять пользуются «индусами»
так что если спамеру не жалко ~ $0.9 за 1000 капч, то любая капча не проблема.
С капчей то же самое. 99% идут лесом, а 1% написан с умом и натаскан на конкретную капчу с этого сайта. Ни разу не видели на том же хабре статей о взломе капчи?
А почему бы, например, не вести «белый список» ip? Например, туда попадают те адреса, с которых за интервал времени T была успешная попытка авторизироваться, и не более N неуспешных. Таким адресам капчу не показывать.

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

А мне (и, думаю, большинству), капчу разгадывать не нужно будет.
Хм-м-м. Интересный метод. Но он тоже хряпается — правда, не незарегистрированным роботом, а зарегистрированным. Который залогинивается, разлогинивается, N раз подбирает чужой пароль, затем меняет IP (прокси), снова залогинивается (под своим логином), снова разлогинивается, снова N раз подбирает чужой пароль…
Обсуждать абсолютную защиту от всех прошлых и будущих спамеров — вытаскивать коня из вакуума, не теряя его (коня) сферичность.
Сломать можно всё, абсолютного не бывает.
Есть оптимальное, которое отсеивает указанные якобы 99%.
А если 1% заточен на конкретное решение, то ты чем-то кому-то не угодил, а такие вещи разбираются отдельно, на месте и во время абузы от этого 1%, когда ты можешь отследить, что он делает и выпиливать его на ходу.
Кроме того, на том же «фрилансру» существует отдельная категория работников — Постинг.
Это ручная работа, не всегда означающая, что постить надо на одном форуме, создавая ИБД.
Против ручной наводки не спасёт никакое ухищрение.
Но и поток на ресурс там меньше.
Капча — малоэффективная защита от современной спамерской автоматики. Убедился в этом на личном опыте, и не раз. Попытки усложнить или изменить капчу давали результат, но временный и в целом неудовлетворительный.

Кстати, при борьбе со спамерами на буржуйских социалках крайне неприятным сюрпризом стало то, что львиная часть спамеров — явно русскоязычные.
Пользователи без js идут лесом.

Хотя это можно определить и поставить им капчу.

UFO landed and left these words here
Чекбокс «я не робот» как в предыдущем посте автора?
да там и чекбокс не нужен, сабмит js-ом правильно сделать и все… уже 95% ботов идут лесом
js — отключен… n% идут с ними вслед :)
сорри, «n% живых пользователей..»
да я самый ярый сторонник того, что нужно все предусмотреть, конечно же для пользователей у которых выключен JS (их немного, но они тоже важны) делается один из методов не требующих скрипта… помимо капчи их тоже хватает, но для небольшого числа пользователей можно и капчу использовать
Это их проблемы. Захотят — включат жавоскрипт, потом выключат.
На хабре капча просто ужасная. Я каждый раз глаза ломаю.

С другой стороны, тут чуть ли не каждый третий — как и на лепре — способен такого бота написать, что мало не покажется — пустить его, зареганного, по сайту шастать…

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

Это применение капчи — правильное.

Кабы её не было, могли бы пострадать люди. Простые люди.
А мне кажется если бороться против подбора пароля то это нужно делать без капчи, а скажем при неправильном вводе пароля сайт не дает возможность осуществить следующую попытку в течении скажем 30 секунд, соответственно скорость подбора у роботов упадет в десятки раз, а пользователям достаточно будет вводит правильный пароль и они даже не заметят такой безопасности.
А вы представьте жалобу в техсаппорт пользователя, которому полчаса пришлось ждать, потому что пароль записан был на бумажке и часть букв потёрлась…
Это очень жестокий способ.
И слава богу, что потерлась. Надо сделать специальную бумагу для хранения паролей, которая автоматически заменяет записанное на звездочки или хэш ;)
А вообще, нечего пароли перебирать. Для чего придумали восстановление пароля? (только не дурацкими ключевыми словами или контрольными вопросами, а отправкой на почту, причем не пароля в открытом виде, а спец. ссылки)
Т.е. постоянный при этом ввод труднораспознаваемой капчи это нормально, а ожидание при неправильном вводе (который по сути не должен присутствовать) это не нормально?

Если рассматривать проблему к капчи правильно:
Она нужна для предотвращения подбора паролей роботом. При этом сценарий работы робота и пользователя различны.
— Робот 99% ввода пароля неправильны, ожидание между запросами измеряется в миллисекундах.
— Пользователь 99% вводов делает правильно, и делает это с первой попытки, если он ввел неправильно, то следующий ввод будет через 5-10 секунд, не раньше.
Нелогично… после N неудачных попыток обычно нажимают — «восстановить пароль».
Было бы еще правильно, что после M (M>N) попыток подобрать пароль — вводилось предупреждение пользователю, что его хотят взломать.
Вы что, издеваетесь?! Против брутфорса есть нормальные методы! Какое нахрен правильное?
но может каптчу ставить хотя бы для тех, кто неправильно ввел пароль?
кто внимательный и с хорошей памятью чем провинился-то?
«С третьей стороны, что мне мешает самолично ввести роботу капчу?» — в случае с Хабром это не так тривиально. Может как раз ради этого все так и задуманно :))
З.Ы. С qt робота на вебките можно с любыми скриптами, куками и т.п. написать за очень небольшое время — это да.
Часто пользователь должен ввести информацию, которую никто в сети не увидит (пример: заказ в магазине). Спамить в такие формы абсолютно бесполезно и разработчики спам-роботов не адаптируют роботов для таких форм. Поэтому там прокатывают самые простые способы защиты, не требующие участия человека. Самое простое: сделать скрытое поле (лучше скрыть с помощью CSS) c именем name, login, user, email… человек этого поля не увидит и не заполнит, а вот робот мимо такого сладенького поля не пройдёт. Защита простая: кто заполнил — того в /dev/null :-) Ну а можно заюзать ещё десяток способов, основанных на куках, javascript… По моему опыту, такая защита работает на 100%.
Она перестаёт работать, только если (1) ресурс очень популярен и спамерам есть резон возиться с ним персонально и (2) если результат заполнения формы становится виден всем.
Критикуя — предлагай. Капчу ругать несложно, вы предложите что-нибудь сравнимое по эффективности.
Вопрос риторического плана и подборку ответов. Своеобразный тест. К примеру…

Как вы думаете, правильно ли было бы отменить налог на прибыль?
Варианты ответов:
1. про бабочек.
2. про пользу оливкового масла
3. про дожди и их значение для сельского хозяйства

7. Да вы обалдели?! Государство с этого налога только и живёт!
8. снова про рыбок…

Человек на вопрос про налоги ответит ответом про налоги. А бот — тот будет тыркать, куда ни попадя.
Теперь представьте этот механизм на хорошем «вкусном» для спамеров сайте. В ЖЖ, например, на мэйл-ру или на Хабре на худой конец. Как думаете, сколько времени эта «защита» проживёт, учитывая, что число вариантов ответов очень и очень конечно?

Да даже если совсем без интеллекта «тыкать куда ни попадя», 1/8 — это охренительная вероятность успеха, за которую любой спамер душу продаст.
Цифра 8 обсуждаема. Количество вариантов, быть может, и ограничено, но кто помешает правильному ответу случайно плавать среди случайного количества вариантов? Тут ниже помянули вариант в стиле «отметьте три фотографии живой природы» — это и есть одна из реализаций моего предложения.
Вот когда вы начнёте наворачивать усложнения — в один прекрасный момент обнаружите, что юзеру эта «капча» доставляет гораздо больше неудобств, чем классическая.

Сама идея капчи состоит в том, что человек некоторую операцию (чтение с картинки) проделывает легко и не напрягаясь, _на автомате_, а для машины та же операция сложна. Конечно, везде можно всё довести до абсурда, как на рапидшаре или на хабре, но вот у Гугла, например, капчи все довольно легко читаемы.

А варианты «собери пятнашку», «возьми интеграл», «выбери правильный ответ» — они все требуют существенной концентрации внимания именно на этой, совершенно посторонней для юзера задаче.

В случае Киевстара надо выбрать 2 варианта из 9. То есть, вероятность правильного ответа при случайном тыке — 1/72. Напомню, что в здешних хабровских статьях про взлом капчи успехом считалась вероятность в 1%…
UFO landed and left these words here
UFO landed and left these words here
Ограниченный набор картинок с довольно слабой вариабельностью, пообновляйте, например, smsgate.kyivstar.ua/sms/images.jpg?id=78173898.

Не думаю, что вломать его сложнее чем капчу.

И с удобностью для пользователя — я бы тоже поспорил. Мне это скорее напомнило незабвенных рапидшаровских «котят»…
Странно, у меня он только 2 картинки просит выбрать, а у Вас 4… Интересно, зачем они так сделали, ведь чем больше картинок можно выбрать, тем больше вероятность успеха при случайном подборе.
Ошибся, при 4 и 5 как раз вероятность минимальна.
А тут и предложено, головой думать, где применять, а где нет.
Я бы, ежели позволите, обратил внимание на другое неудобство капчи. Вот, смотрите:

КMCВРPH

Проблема номер раз состоит в том, что зачастую степень зашумлённости капчи настолько высока, что человеческому глазу в ней ничего не понятно. Видимо, имеет смысл обратить внимание на разумный баланс — чем зашумлённее капча, тем труднее её прочитать роботу (в смысле, алгоритму распознавания), но и человеку её прочитать труднее — высока вероятность ошибки. Представьте себе, что я, публикуя этот комментарий, ошибся с капчей. Кнопка «Назад» браузера? Но в подавляющем большинстве случаев я снова увижу окно для ввода текста комментария пустым — а я ведь старался, писал, мыслил и всё такое. Человек просто плюнет на это дело, тогда как роботу ничего не стоит попытаться ещё миллион раз — он железный, ему пофиг.
Проблема номер два ещё проще — на каком языке написано сочетание символов, приведённое выше? Покорёженную цифру 1 очень трудно отличить от покорёженной большой латинской I. О (первая буква облака) от 0 (=1-1) на капче также не отличаются. Незадача здесь всё та же — человек плюнет, тогда как робот постарается ещё миллион раз и пробьётся.
Можно использовать политику для паролей, чтобы не было всяких йцукенов и квертей. Если использовать сложную политику против которой brute force бессилен, потребность в капче может отпасть. Также, капча после нескольких неудачных попыток входа тоже надежный вариант.
Интересно, а кто нибудь из предлагающих альтернативу капче сам эти способы пробовал? Сдается мне что нет.

Пример из жизни — обычная форма обратной связи на сайте средней посещаемости. Я с ней развлекался несколько месяцев по выше описанным рецептам (скрытые поля, js-submit и прочее). Результат — нулевой. Как приходило по 10-20 спам писем в день, так и приходит.

Потом мне это надоело, и я поставил простейшую капчу. Результат близок к 100% — 2-3 спам письма в месяц. Это притом, что сайт никто специально не ломал, это были явно приблудные боты общего назначения.
Я поставил на своём блоге скрытые поля с именами типа «login_name», «email». И настоящие поля с именами вида «adfsdfsdkfsldkfjsdlkfjsldkfjsdlkfjsdlfkjsd». Пока ни одного спамера за две недели не просочилось. Если начнут просачиваться, включу следующую линию защиты. И что самое интересное, на сайте все коменты всегда были премодерируемые. То есть спамер по сути вслепую постил.
Можно кстати сделать, чтобы имена этих скрытых полей периодически менялись. Метод кстати очень эффективный, я так на форуме 95% спаммеров вырезал без капчи. Потом они начали просачиваться, я поменял имена полей, опять тишина. Но гораздо эффективнее на мой взгляд поменять местами к примеру «login_name» и «email» это обычно полностью сбивает с толку парсер бота. Правда судя по просачивающимся спаммерам, многие боты ориентируются не по названию форм а по тому, что условно первым идёт форма логина, вторым пароль а третьим емейл.
У меня была идея привязывать названия полей к имени сессии. Но пока не реализовал. Либо же в самой форме вставлять жавоскриптом имя сессии. Вроде, боты ещё не такие умные, чтобы это использовать. Если, конечно, бот не использует браузер для постинга.
От ручного спама спасет только предмодерация
Видели мы один раз человека, который косил под аськоспамбота… Блин когда мы это просекли и начали его провоцировать, то он сорвался, было забавно в свой ответ получить матюги от предполагаемого бота…
Как вы думаете, что значит буква T в акрониме CAPTCHA? ;)
Блин и правда ведь не задумывался над этим вопросом
CAPTCHA [ˈkæptʃə] (от англ. «Completely Automated Public Turing test to tell Computers and Humans Apart» — полностью автоматизированный публичный тест Тьюринга для различия компьютеров и людей)
Как-то так… нечего менять :)
а зачем надо было изобретать свою нечитабельную капчу, когда есть внятная гуглькапча или даже рекапча?

помоему это очередное подтверждение тезиса, что изобрести велосипед очень сложно, практически невозможно :)
рекапча, кстати, значительно менее раздражает, ибо создаёт иллюзию сопричастности к полезному делу.
>Разработчику следует всегда помнить, что капча…

Это следует помнить менеджеру, который принимает решение. А разработчик это должен просто уметь (могу копать, могу не копать) при необходимости сделать.
Согласен с автором статьи, капча нужна только там где это необходимо. Если же говорить о переборах паролей высокопосещаемых ресурсов, то тут стоит использовать только проверенные решения. Например дать возможность пользователям привязать свой логин к IP. Входишь с определенного адреса/адресов — капча не показывается, ломишься с другого — будь добр разгадай «ребус»)
Читайте выше. Она не особо надёжна.
Sign up to leave a comment.

Articles