Безопасное всплывающее окно возможно?

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

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

Есть ли способ сделать всплывающее окно регистрации безопасным без создания всего сайта https?

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

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

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

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

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

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

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

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

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

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

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

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

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