С опозданием на мой ответ, но я все равно опубликую, и я знаю, что это не дает прямого ответа на вопрос, но это связано, тем не менее. Вот несколько моментов о безопасности входа в систему.
Запомнить меня
Лучше всего заново хешировать хешированный пароль и сохранить перефразировку в файле cookie, используемом для автоматического входа пользователя. Когда вы переферируете пароль, используйте что-то специфическое для браузера в качестве начального числа, например тип браузера. Это поможет предотвратить кражу куки (через людей, отслеживающих сетевой трафик). Это помогает предотвратить любую возможность использования радужных таблиц.
Сессия
Помните о захвате сессии: http://en.wikipedia.org/wiki/Session_hijacking
CSRF
Подделка межсайтовых запросов - Реализована после входа в систему, но о ней нужно знать, поскольку она затрагивает только зарегистрированных пользователей: http://en.wikipedia.org/wiki/Cross-site_request_forgery
1024 * HTTPS *
HTTPS должен использоваться на странице, на которую отправляется запрос на вход - он НЕ обязательно должен быть на странице, на которой вы вводите свои данные для входа!
хеширование
Вы можете хэшировать пароли на стороне клиента, используя javascript, который будет работать только на сервере, чтобы защитить участников от кражи их паролей при передаче их по сети, когда HTTPS не используется. Это хорошо, потому что многие люди часто используют один и тот же пароль для многих сайтов. Недостатки: вы не можете проверить длину пароля на стороне сервера, и они не могут войти, если javascript отключен (хотя вы можете программировать это до некоторой степени). Yahoo раньше (возможно, до сих пор) делал это несколько лет назад.
Когда вы получаете пароль на сервере, он часто перефразируется с помощью начального числа и сохраняется в базе данных. Это более безопасно, так как даже если люди знают хэш, они все равно не могут войти! Только оригинальный пароль будет перефразирован в тот же хеш, позволяя пользователю войти в систему.
кейлоггеров
Если вы хотите обойти клавиатурные шпионы (или большинство из них), вы можете сделать это, добавив клавиатуру / клавиатуру JavaScript. Затем пользователь нажимает буквы и цифры, чтобы ввести свой пароль, используя мышь вместо клавиатуры, и это означает, что кейлоггер с трудом регистрирует пароль.
Что-то знает, что-то есть, что-то
Три уровня безопасности. Что-то, что кто-то знает, например, пароль, что-то у кого-то, например, телефон (Google выполняет эти первые 2 с помощью двухэтапной проверки), и что-то, например, отпечаток пальца. Чем больше из них вы заполняете, тем выше ваши полномочия по безопасности - в конечном счете !!!
Боты
Компьютеры иногда пытаются перебрать страницу быстрого входа в систему (должна быть быстрой, как если бы пароль был неправильным, а скрипт останавливался даже на 1 секунду, что значительно сокращало общее количество попыток входа в систему, которые может предпринять бот. Чтобы помочь вам остановить это, можно приостановить неверный вход в систему на 1 или 2 секунды (как это делает linux), или вы можете сделать захват, который боты решают трудно после X неправильных входов (как это делает Google).
Там основные моменты, но я уверен, что есть и другие.