На всякий случай, регистрация в моем текущем приложении не хранит параметры, переданные в методы входа в систему или сброса пароля. В вызове журнала есть необязательный параметр, который управляет этим, и при значении true объект хранимых параметров заменяется на [Redacted]
. Конечно, поэтому я пропускаю немного данных, но у меня есть их IP-адреса, и я бы предпочел не рисковать, чтобы получить что-то, что чувствительно в открытом тексте.
Если вы действительно хотите регистрировать подобные вещи, я бы посоветовал, чтобы при регистрации попытки входа в систему вы проверяли базу данных на наличие пользователей с именем, совпадающим с тем, которое у вас есть в поле имени пользователя, и сохраняли его только при наличии совпадения. В противном случае вы просто сохраняете его как «неизвестный пользователь». Вы можете подумать, проверив, содержит ли это значение то или иное, но всегда есть риск, что вы получите комбинации, такие как [User] [Password] и [UserPas] [sword], и в этом случае вы можете проверить по IP и вывести, что Вы случайно сохранили начало чьего-либо пароля в открытом виде. Вы можете распространить это на маловероятные, но возможные [User] [Password] и [UserPassword] [??], и в этом случае вы можете увидеть «неудачный вход в систему с помощью UserPassword», за которым следует «Успешный вход в систему пользователем» и вывести всепароля пользователя. Как правило, для безопасности я бы сказал, чтобы не регистрировать имена пользователей, если вход в систему не будет успешным.
Изменить, чтобы добавить:
Большинство аргументов, которые люди публикуют для регистрации имени пользователя при неудачных попытках входа, по моему мнению, лучше обрабатываются другими методами.
Например, было сказано, что когда клиент спрашивает «почему я не могу войти?», Зарегистрированные имена пользователей позволят вам указать на опечатки. Это правда, но не стоит рисковать также перехватом паролей; Я бы сделал это, вместо этого перенаправив пользователя обратно в форму входа в систему при неудаче, выделив поле имени пользователя и снова заполнив его тем, что они ввели, чтобы они могли сами убедиться.
Другим аргументом было то, что он позволяет вам идентифицировать попытки взлома; Строка сбоев в отношении одного имени пользователя вполне может быть попыткой взлома пароля. Я бы сделал это, имея столбец «BadLogins» в таблице «Пользователи», который увеличивается каждый раз, когда происходит сбой входа в систему с именем пользователя, соответствующим этому пользователю, и сбрасывается в ноль при успешном входе в систему после сообщения пользователю «там было x неудачных попыток входа в систему с момента вашего последнего входа в систему »и консультирование их относительно того, что делать, если они не думают, что попытки были от них. Если вы хотите быть очень внимательным, у вас может быть другой столбец, в котором хранится последнее значение столбца BadLogins даже после успешного входа в систему, и / или столбец, в котором хранится самое высокое значение этого столбца за всю историю, и / или столбец, который хранит общее количество неудачных входов в систему