После входа в систему, должны ли все страницы быть https?

Это будет немного сложно объяснить, но я постараюсь изо всех сил.

Существует веб-сайт с формой входа на каждую страницу с полями имени пользователя и пароля. Эти страницы не используют SSL. После того, как пользователь заполнит имя пользователя/пароль и отправит форму, форма отправляется на страницу аутентификации https.

У меня есть несколько вопросов об этой ситуации.

  1. При отправке формы на страницу https зашифрованы данные? Или только после перехода с https-страницы (я предполагаю, что это происходит только)?
  2. Если ответ на номер один - это лестница, значит ли это, что мне нужно будет использовать https для всех страниц, потому что форма входа перенаправляется оттуда?
  3. После аутентификации пользователя с помощью https пользователь может быть перенаправлен обратно на http и продолжить использование данных сеанса? Или пользователь должен оставаться в https?
  4. Лучше/хуже оставить пользователя в https?

Большое спасибо за любую помощь!
Метрополис

Заключение

Хорошо, поэтому, подумав об этом некоторое время, я решил просто сделать все это https. @Mathew + @Rook, ваши ответы были отличными, и я думаю, что вы оба делаете большие очки. Если бы я был в другой ситуации, я, возможно, делал это по-другому, но вот мои причины для создания всего https.

  1. Управлять запросами страниц будет проще, так как мне остается только оставаться в https.
  2. Я не слишком беспокоюсь о производительности (в другой ситуации, возможно, я был)
  3. Мне не нужно задаваться вопросом, защищены ли данные пользователей во всех местах.
  4. Я буду следовать руководству OWASP, как заявил Рук.

Ответы

Ответ 1

В соответствии с В верхней части OWASP 10 нигде не может использоваться аутентифицированный идентификатор сеанса по HTTP. Таким образом, вы создаете сеанс по протоколу HTTP, а затем этот сеанс становится аутентифицированным, тогда вы нарушили Top 10 OWASP, и вы позволяете вашим пользователям быть восприимчивыми к атаке.

Я рекомендую установить безопасный флаг в вашем файле cookie. Это ужасное имя для этой функции, но заставляет файлы cookie быть только https. Это не следует путать с "Httponly cookie", который является другим флагом, который помогает смягчить влияние xss.

Чтобы ваши пользователи были в безопасности, я постоянно использовал HTTPS. ssl - очень легкий протокол, если вы сталкиваетесь с проблемами ресурсов, а затем подумайте о цепочке https-политик.

Ответ 2

  • Да. Если URL-адрес действия https, данные формы зашифровываются.
  • Из-за # 1 вам не нужно делать страницу https, но вы можете получать предупреждения о смешанном содержании. И, конечно же, злоумышленник "человек в середине" может манипулировать страницей входа, чтобы указать на другой URL-адрес действия.
  • Это решение для вас. Очевидно, что любые данные, передаваемые через HTTP, могут ли быть перехвачены и обработаны файлы cookie (включая файлы cookie cookie) или пользовательские данные.
  • Опять же, это компромисс, основанный на производительности и безопасности.

Ответ 3

В дополнение к тому, что говорит The Rook, отправка формы с http на https представляет собой риск для нескольких причин:

  • На странице, где люди вводят свое имя пользователя и пароль, нет значка "блокировки", поэтому у них нет возможности узнать, что их данные зашифрованы (кроме как "доверять вам" ).
  • Если кто-то убьет вашу страницу, ваши пользователи не смогут узнать, что они собираются ввести свое имя пользователя и пароль и перенаправляться на вредоносную страницу (это в некотором смысле следствие №1).

Это гораздо более простая атака, чем перехват http cookie, поэтому на самом деле это еще больший риск...

Но точка "Грач" важна: вы никогда не должны смешивать трафик http и https. На наших сайтах, как только вы вошли в систему, с этого момента все https.

Ответ 4

Помимо предыдущих ответов, поскольку люди склонны идти от HTTPS к HTTP по соображениям производительности, в этой статье о HTTPS в Google может представлять интерес. Его главное сообщение:

SSL/TLS не является вычислительным дорогой.