Вспомнилось мне, как вроде бы давно, а вроде бы не давно бул у нас конкурс на защиту от ботов.
придумывали трёхмерные капчи, капчи с перетаскиванием и т.д.
Вчера сходу написал авторизацию, в которой совсем не вижу необходимости использование капчи, т.к. защита от ботов реализовано другим способом.
Промаха в таком подходе за целые сутки я выявить не смог.
Сут вот какая.
есть форма авторизации
<form>
<input id="login" name="login" type="text"/>
<input id="pass" name="pass" type="text"/>
<input id="key" name="key" type="text"/>
<form>
на поле логина к примеру
<input id="login" name="login" type="text"/>
я вешаю на onchange() функцию JS которая из value логина берёт данные, кодирует ( брал несколько хешей и смешивал), и подставляет в value поля key
<input onchange="genKey()" id="login" name="login" type="text"/>
таким образом при отправки данных с формы идут поля login, pass, key
Следующим щагом проверка key на php
соот-но берётся key из формы и формируется key из логина (только уже на стороне сервера), они сравниваются.
если разные - то останавливаем обработку
если одинаковые - то ищем в БД и т.д.
------------------------------------------------
В чём именно я вижу плюсы такого подхода:
- key формируется только после того как в поле логина был снят фокус - как такое бот может реализовать - я не вкурсе, ни как наверно
key не возможно сгененировать для брутфорса, т.к. подразумевается что на JS файл обуксирован (а с сервера php не достать) и алгоритм известен тока разрабу.
минусы - придётся забыть про автозаполнение и юзеру нужно будет тока ручками вводить данные для входа
---------------------------------
в итоге не предумал ещё название такому способу, но в сети его ранее не встречал, именно в этом месте - как замену капчи
----------------
Что скажете?
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker