Глава 22 · Веб-разработка с Python

HTTPS: защита соединения с сайтом

HTTPS защищает канал между браузером и сервером — но не заменяет безопасность самого приложения.

HTTPS — использование протокола HTTP поверх TLS (Transport Layer Security): те же сообщения запрос-ответ, но соединение, по которому они передаются, защищено. Это важно, потому что обычный HTTP-запрос идёт по сети без транспортного шифрования: любой, кто технически способен перехватить трафик между браузером и сервером (например, в общей Wi-Fi сети), может его прочитать или незаметно изменить.

HTTPHTTPS
Данные в путиБез шифрованияЗашифрованы
Можно ли перехватить и прочитатьДа, технически возможноПрактически нет — без ключа шифрования содержимое нечитаемо
Можно ли незаметно подменить данные в путиДаНет — подмена нарушает проверку целостности, и соединение считается недействительным
Подтверждение личности сервераНетСертификат подтверждает, что сервер — тот, за кого себя выдаёт

TLS решает три задачи: конфиденциальность (данные в пути нечитаемы для посторонних), целостность (получатель может обнаружить, что данные были изменены в пути) и подлинность сервера (сертификат подтверждает, что вы говорите именно с тем сервером, а не с подменённым).

HTTPS защищает канал, а не само приложение
HTTPS не делает сайт «безопасным» в широком смысле. Он защищает данные по пути между браузером и сервером — но если в самом приложении есть ошибка (например, SQL-инъекция — раздел 22.32), HTTPS её никак не устраняет: данные доедут до сервера в целости и там же будут неправильно обработаны. Это разные слои защиты, и один не заменяет другой.

Мы намеренно не разбираем математику шифрования — для веб-разработки на уровне этой главы достаточно знать, зачем HTTPS нужен и что именно он защищает. В разработке локально (раздел 22.34) чаще всего используют обычный HTTP на своём компьютере — шифровать канал внутри одной машины не требуется; HTTPS становится нужен, когда приложение реально развёрнуто и доступно через интернет.