Несколько лет спустя просто добавить еще одно простое базовое R-решение, которое по какой-то причине отсутствует здесь xtabs
xtabs(Frequency ~ Category, df)
# Category
# First Second Third
# 30 5 34
Или, если хотите data.frame
назад
as.data.frame(xtabs(Frequency ~ Category, df))
# Category Freq
# 1 First 30
# 2 Second 5
# 3 Third 34
Используйте некоторые столбцы в своей пользовательской таблице 'failed_login_attempts' и 'failed_login_time'. Первый увеличивает на неудавшийся вход в систему и сброс на успешном входе в систему. Второй позволяет Вам сравнивать текущее время с прошлым неудавшимся разом.
Ваш код может использовать эти данные в дб для определения, сколько времени это ожидает для блокировки пользователей, время между позволенными логинами и т.д.
Принятие Google сделало необходимое тестирование удобства пользования (не несправедливое предположение) и решило использовать капчи, я предложил бы согласиться с ними.
Увеличивающиеся тайм-ауты печальны, когда я - подлинный пользователь и забыл мой пароль (с таким количеством веб-сайтов и их связанными паролями, который происходит много, особенно мне)
Хранение попыток в базе данных является лучшим решением, по моему скромному мнению, так как это дает Вам записи аудита попыток нарушения защиты. В зависимости от Вашего приложения это может или не может быть законным требованием.
Путем записи всех плохих попыток можно также собрать высокоуровневую информацию, такой, как будто запросы прибывают из одного IP-адреса (т.е. кто-то / вещь делает попытку атаки перебором), таким образом, можно заблокировать IP-адрес. Это может быть ОЧЕНЬ полезной информацией.
, После того как Вы определили порог, почему бы не вынудить их запросить электронную почту быть отправленной в их адрес электронной почты (т.е. подобный 'Я забыл свой пароль'), или можно пойти для подхода CAPCHA.
Политика блокировки - все хорошо и хороший, но существует баланс.
Одно соображение должно думать о consruction имен пользователей - отгадываемый? Они могут быть перечислены вообще?
я был на Внешнем Перьевом Тесте Приложения для доткома с Порталом Сотрудника, который служил Веб-доступу Outlook / Intranet Services, определенные Приложения. Было легко перечислить пользователей (Должностное лицо/Managament Команда на самом веб-сайте, и через подобных Google, Facebook, LinkedIn и т.д.). Как только Вы получили формат входа в систему имени пользователя (firstname тогда фамилия, вводимая как единственная строка), у меня была возможность закрыться 100's пользователей из-за их 3 забастовок и политики.
Вы знаете, какой идентификатор пользователя поражается, сохраните флаг и когда он достигает, пороговое значение просто прекращают принимать что-либо для того пользователя. Но это означает хранение дополнительного значения данных для каждого пользователя.
мне нравится понятие экспоненциально увеличивающегося времени между попытками, [...]
Вместо того, чтобы использовать экспоненциально увеличивающееся время, у Вас могла на самом деле быть рандомизированная задержка между последовательными попытками.
, Возможно, если Вы объясняете, какая технология Вы используете людей здесь, сможет помочь с более определенными примерами.
Сохраните информационную серверную сторону. Это позволило бы Вам также защищать от распределенных нападений (прибывающий из нескольких машин).
Вы хотели бы говорить, блокируются, вход в систему в течение некоторого времени говорят, например, 10 минут четвертого попытки отказа, например. Экспоненциально увеличивающееся время звучит хорошим мне. И да, храните информацию на серверной сессии или базе данных. База данных лучше. Никакой бизнес cookie, поскольку легко управлять пользователем.
можно также хотеть отобразить такие попытки против клиентского адреса IP, поскольку довольно возможно, что действительный пользователь мог бы получить заблокированное сообщение, в то время как кто-то еще пытается предположить пароль действительного пользователя с попытками отказа.