Хммм,
Здесь будет работать протокол ответа на вызов.
Клиент получает страницу входа
1) Начать сеанс
2) Создать ключ сеанса
3) Отправить сеансключ в качестве цели хеширования
Пользователь входит в систему, нажимает кнопку отправки
1) Задача Javascript SHA-1 сессионного ключа + пароль SHA-1, записывает результат в поле пароля
2) Форма Jimascript subimts
3) Сервер берет SHA-1 сессионного ключа + хэш-пароль SHA-1 и сравнивает
Сессионный ключ - это то, что удерживает перехватчик от воспроизведения потока.Сервер помнит, что это было.
ОДНАКО, SHA1 пароля должен использовать соль.Простое использование имени пользователя может быть достаточно для предотвращения работы готовой радужной таблицы.Поскольку соль будет раскрыта в этом протоколе, вы не сможете полностью победить радужные столы.
РЕДАКТИРОВАТЬ: Оглядываясь назад, я ничего не прояснил.Идентификатор сессии, о котором я говорю, не является идентификатором сессии PHP.Это дополнительный идентификатор, который хранится в переменной сеанса и передается клиенту в форме.Его нужно использовать один раз для аутентификации и удалить из переменной сеанса PHP afterwords.Тем не менее, сниффер может захватить сеанс после этого момента.
Пожалуйста, имейте в виду, что весь этот вопрос - способ защитить пароль от снифферов.Его собственный сайт полностью уязвим для любого, кто может прослушивать и перехватывать сеанс, и он знает это.
ОГРОМНОЕ ПРЕДУПРЕЖДЕНИЕ ЖИРА: злоумышленник MITM может заменить код javascript чем-то другим, например, предоставить ему копиюпароль.Только SSL может защитить от этой атаки.