Проверьте, поддерживает ли неизвестный / удаленный сервер HTTPS - PullRequest
0 голосов
/ 05 ноября 2019

Есть ли возможность проверить, поддерживает ли удаленный сервер https? В настоящее время я запрашиваю https, если он не работает, повторите попытку http, а затем отобразите ошибку, если это все еще не работает. Есть ли в HTTP встроенная функция, которая указывает, поддерживается ли https? Под этим я не подразумеваю перенаправление и т. Д., Поскольку они должны быть реализованы на сервере и не всегда.

1 Ответ

1 голос
/ 05 ноября 2019

Тихо отступать к HTTP звучит опасно. Злоумышленник (то есть человек в середине) может заставить вас использовать небезопасный канал, блокируя ваши запросы к HTTPS. Таким образом, я бы не рекомендовал этот подход в целом.

В общем, вы должны позволить своим пользователям решать, какой протокол использовать. Если они указывают HTTPS, вы не должны молча понизить рейтинг, а выдать ошибку. Однако, если они указывают http, может быть также возможно сначала попробовать https и молча вернуться к http, если это не удастся (поскольку они сначала запросили http).

Общий ответ на ваш запрос: выможно только попробовать https, чтобы проверить, поддерживает ли сервер https. Существует расширение HTTP (s) под названием HTTP Strict Transport Security (HSTS) , которое позволяет серверам указывать, что все запросы к ним всегда должны выполняться только по защищенным каналам. Если вы получите такой заголовок в ответе на запрос HTTPS, вы можете принудительно установить https в будущем для хоста. Обратите внимание, что вы должны игнорировать такие заголовки, полученные по небезопасному HTTP.

Как правило, вы не можете доверять любой информации, полученной по незашифрованному HTTP, чтобы дать вам какие-либо указания о параметрах безопасности (например, о поддержке TLS). сервера, так как эта информация может быть произвольно подделана злоумышленниками. Фактически, предотвращение таких необнаружимых изменений является одной из основных причин использования TLS / HTTPS.

...