Безопасный всплывающий логин возможно? - PullRequest
4 голосов
/ 17 января 2012

У меня есть форма входа в систему, которая скрыта на каждой странице и при необходимости отображается на клике, вместо того, чтобы отправлять запрос на новую страницу.

Мне стало известно, что для входа в систему действительноДля обеспечения безопасности действие формы должно указывать на страницу https, а сама форма входа должна быть на странице https.

Можно ли как-нибудь обезопасить всплывающую форму входа в систему, не делая весь сайт https?

Ответы [ 3 ]

4 голосов
/ 17 января 2012

Использование всплывающего окна AJAX (или iframe), которое (теоретически) переходит на https:// на странице http://, представляет две проблемы:

  1. Злоумышленник может перехватить страницу и заменить ссылку своей собственной.
  2. Это не позволяет пользователю проверять, к какому сайту он подключен.

Первая проблема связана с этим вопросом (не относится только к всплывающим окнам AJAX, но для страницы входа по обычному HTTP, также обсуждается в Security.SE ). Это противоречит этой рекомендации OWASP :

Страница входа и все последующие аутентифицированные страницы должны быть доступ исключительно по TLS. Начальная страница входа, называемая "целевая страница входа в систему", должна обслуживаться через TLS. Неспособность использовать TLS для целевой страницы входа в систему позволяет злоумышленнику изменить имя входа действие формы, в результате чего учетные данные пользователя будут опубликованы на произвольное местоположение.

По сути, MITM может изменить страницу, которую вы используете, на сервер, на котором поле входа в систему, чтобы заменить его своим: пользователь не сможет заметить разницу (по крайней мере, пока не станет слишком поздно).

Вторая проблема заключается в том, что на самом деле хорошо видеть, что вы подключились (а также собираетесь подключиться для следующего шага) к нужному веб-сайту в адресной строке. Любой может иметь действительный https:// сайт: mybank.example.com и attackers.example.com могут иметь действительный сертификат, выданный доверенным органом. Если я подключаюсь к своему банку, я хочу знать, что к моему банку я подключен по HTTPS. Отправка учетных данных на сайт https:// из всплывающего окна или из фрейма скрывает настоящий целевой веб-сайт.

Эта проблема также может возникать, когда начальная страница обслуживается по протоколу HTTPS, как, к сожалению, продемонстрировала система 3-D Secure (эти люди должны знать лучше, действительно!).

Короче говоря, не используйте iframe или всплывающее окно, а обслуживайте страницу, где вы представляете форму входа через HTTPS.

2 голосов
/ 17 января 2012

Если не считать обертывания всего сайта в протоколе SSL, единственной другой возможностью для этого будет иметь всплывающую форму IFRAME, которая указывает на другую страницу с формой, которая находится на HTTPS-соединении.

1 голос
/ 17 января 2012

Если первоначальный запрос обслуживается по протоколу HTTP, и вы используете тот же канал для предоставления ссылок / форм HTTPS и т. Д., Злоумышленник просто изменит этот HTTPS на HTTP.

Это было продемонстрировано Firesheep

Что вы можете сделать, это обслуживать HTTPS-форму через HTTP, но включить HTTP Strict Transport Security

Конечно, я предполагаю, что у вас будет ссылка типа https://login.site.com, которая будет обслуживаться http://www.site.com ... таким образом, вам придется создавать SSL-сертификат только для подсайта / один виртуальный хост

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...