После входа в систему, должны ли все страницы быть https?
Это будет немного сложно объяснить, но я постараюсь изо всех сил.
Существует веб-сайт с формой входа на каждую страницу с полями имени пользователя и пароля. Эти страницы не используют SSL. После того, как пользователь заполнит имя пользователя/пароль и отправит форму, форма отправляется на страницу аутентификации https.
У меня есть несколько вопросов об этой ситуации.
- При отправке формы на страницу https зашифрованы данные? Или только после перехода с https-страницы (я предполагаю, что это происходит только)?
- Если ответ на номер один - это лестница, значит ли это, что мне нужно будет использовать https для всех страниц, потому что форма входа перенаправляется оттуда?
- После аутентификации пользователя с помощью https пользователь может быть перенаправлен обратно на http и продолжить использование данных сеанса? Или пользователь должен оставаться в https?
- Лучше/хуже оставить пользователя в https?
Большое спасибо за любую помощь!
Метрополис
Заключение
Хорошо, поэтому, подумав об этом некоторое время, я решил просто сделать все это https. @Mathew + @Rook, ваши ответы были отличными, и я думаю, что вы оба делаете большие очки. Если бы я был в другой ситуации, я, возможно, делал это по-другому, но вот мои причины для создания всего https.
- Управлять запросами страниц будет проще, так как мне остается только оставаться в https.
- Я не слишком беспокоюсь о производительности (в другой ситуации, возможно, я был)
- Мне не нужно задаваться вопросом, защищены ли данные пользователей во всех местах.
- Я буду следовать руководству 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 не является вычислительным дорогой.