Рассмотрим сценарий, в котором пользовательская идентификация (имя пользователя и пароль) вводится пользователем в элементе формы страницы, который затем отправляется. Данные POST отправляются через HTTPS на новую страницу (где php-код проверяет учетные данные). Теперь, если хакер сидит в сети и говорит, что имеет доступ ко всему трафику, достаточно ли в этом случае защита уровня приложения (HTTPS)? Я имею в виду, будет ли достаточное шифрование URL-адресов или существует необходимость в обеспечении безопасности транспортного уровня?
Да, все (включая URL) проходит через зашифрованный канал. Единственное, что обнаружил злодей, – это IP-адрес сервера, к которому вы подключаетесь, и что вы используете HTTPS.
Ну, если он также отслеживал ваши DNS-запросы, он также мог бы узнать доменное имя IP-адреса. Но именно это, путь, параметры запроса и все остальное зашифрованы.
Да. В HTTPS только рукопожатие делается незашифрованным, но даже HTTP GET / POST-запрос выполняется зашифрованным.
Однако невозможно скрыть, к какому серверу вы подключаетесь, так как он может видеть ваши пакеты, он может видеть IP-адрес, куда идут ваши пакеты. Если вы тоже хотите скрыть это, вы можете использовать прокси-сервер (хотя хакер знал бы, что вы отправляете прокси-сервер, но не туда, куда последуют ваши пакеты).
HTTPS достаточно «если» клиент защищен. В противном случае кто-то может установить пользовательский сертификат и сыграть man-in-the-middle.
Как веб-разработчик не так много можно сделать, кроме как запретить HTTP-запросы. Это можно сделать через mod_rewrite в Apache.
Является адекватным, потому что, если у него есть доступ ко всему вашему трафику, не имеет значения, какой протокол шифрования вы используете, он может использовать человека посередине для обоих протоколов шифрования.