Как ограничить пользователя после 3 последовательных неудачных попыток входа в Java Web App?

#java #security #session #spring-mvc #restriction

#java #Безопасность #сессия #spring-mvc #ограничение

Вопрос:

Я хочу ограничить пользователя после 3 последовательных неудачных попыток входа в мое веб-приложение. Возможно ли это только HttpSession без каких-либо операций с базой данных? Я использую Spring MVC, но не использую Spring-Security для своего веб-приложения. Пожалуйста, предложите мне способ, если это возможно.

Комментарии:

1. Планируете ли вы использовать Spring Security?

2. нет .. для этого приложения .. сейчас это невозможно ..:(

Ответ №1:

Вы можете поддерживать счетчик в сеансе, сколько раз пользователь не смог войти в систему. Но это будет ограничено браузером, если пользователь запустил какой-либо другой пользовательский HttpSession не будет работать. Вы можете сохранить эту базу данных после 3-го сбоя из того же браузера. Обычно для таких задач люди предпочитают поддерживать в БД.

Ответ №2:

Для лучшего подхода вам нужны как HttpSession, так и Database. Пример: учетные записи могут быть заблокированы после 3 неудачных попыток в течение 12 часов. Через 12 часов, если снова будут неудачные попытки, период блокировки составит 24 часа (или около того .. увеличивающееся время), поэтому вам нужна таблица входа для хранения этих артефактов.

Существует хорошая библиотека ESAPI от OWASP, просто проверьте ее. Он имеет в основном интерфейсы, которые позволяют вам реализовать, но есть эталонная реализация, просто изучите ее.

     incrementFailedLoginCount();
    if (getFailedLoginCount() >= ESAPI.securityConfiguration().getAllowedLoginAttempts()) {
                            lock();
                    }
    throw new AuthenticationLoginException("Login failed", "Incorrect password provided for "   getAccountName() );