Для входа в систему SSL должен быть вашим выбором, даже на этом этапе. Если это просто для входа в систему, вам не нужна дорогостоящая ферма SSL, но, по крайней мере, вы защищаете пароль (для всех типов), хотя ясно, что оставшаяся связь не защищена [ *] . Это может означать, что вам нужно купить сертификат только для одного сервера входа, что может снова сэкономить вам много денег, в зависимости от поставщика сертификата.
Для GWT, если вы не можете позволить себе шифровать все коммуникации, вам придется поместить логин на отдельной странице из-за ограничений той же политики происхождения.
Если это все еще не вариант, вы можете подумать о входе через OpenID , как это делает stackoverflow.
Не может быть любой защищенной связи через незащищенный носитель без некоторого предварительного общего секрета - обычно предоставляемого корневыми сертификатами, установленными в браузере (кстати, это забавно) / страшно, что браузеры и даже целые операционные системы обычно загружаются через HTTP). Другие системы, например PGP, полагайтесь на ранее установленное доверие в "Web Of Trust" , но это всего лишь еще одна форма общих секретов. Обойти это невозможно.
[*] Использование SSL для всего - к сожалению - сопряжено с дополнительными практическими проблемами: 1) Загрузка страниц происходит намного медленнее, особенно если у вас много элементов на странице. Это происходит из-за циклических обходов, вызванных SSL, и из-за задержек, с которыми вы не можете справиться даже при самой быстрой ферме SSL. Проблема смягчается, но не полностью устраняется с помощью соединений keep-alive. 2) Если ваша страница содержит элементы с чужих сайтов, отличных от HTTPS (например, изображения, вставленные пользователями), многие браузеры будут отображать предупреждения - которые очень расплывчаты относительно реальной проблемы безопасности, и поэтому обычно неприемлемы для защищенного сайта.
Несколько дополнительных мыслей (не рекомендация)
Давайте на минутку предположим наихудший случай, то есть вы вообще не можете использовать SSL. В этом случае, что может быть удивительно, хеширование пароля (с солью) перед его передачей может быть немного лучше, чем ничего не делать. Вот причина: он не может победить Мэллори (в криптографии, человека, который может манипулировать коммуникацией), но, по крайней мере, он не позволит Еве (человеку, который может только слушать) читать открытый текстовый пароль. Это может чего-то стоить, если мы предположим, что Евы встречаются чаще, чем Мэллори (?). Но учтите, что в этом случае вы должны хешировать пароль снова (с другой солью), прежде чем сравнивать его с значение базы данных.