HTTP (Протокол передачи гипертекста) — это коммуникационный стандарт, который был разработан в 1992 году для передачи гипертекстовых HTML-документов, но в современном мире его использование охватывает множество других типов данных. Гипертекст — это текст, содержащий гиперссылки, которые открывают новые страницы или ресурсы при нажатии.
HTTP использует протокол TCP для передачи данных. Этот протокол служит основой и для работы других прикладных протоколов, таких как SOAP, XML-RPC и WebDAV.
Принцип работы HTTP
HTTP функционирует на основе клиент-серверной архитектуры. Клиент — это пользователь, который начинает установление соединения и отправляет запрос серверу, который в свою очередь ожидает этот запрос, обрабатывает его и возвращает ответ. Ответ может содержать документ, который может включать в себя поддокументы, структурированные данные, скрипты, изображения, видео и другие типы информации. На пути между запросом и ответом могут находиться посредники, например, прокси-серверы.
Запросы чаще всего отправляет веб-браузер, хотя нередки случаи, когда это делают боты, которые сканируют страницы сайтов для обновления информации. Например, поисковики используют роботов для индексации веб-страниц.
В каждом клиентском запросе обязательно указывается URI (Унифицированный идентификатор ресурса), который определяет конкретный ресурс, такой как файл на сервере или абстрактный объект. Кроме того, клиент может указать представление данного ресурса по различным параметрам, таким как язык, кодировка и формат, используя HTTP-заголовки.
Самым важным аспектом является возможность указания двоичного представления. Благодаря этому HTTP позволяет передавать не только гипертекст, но и двоичные данные.
Что важно, HTTP не поддерживает сохранение состояния между запросом и ответом. Поэтому для сохранения данных необходимо использовать дополнительные инструменты, такие как сессии на сервере и cookies на стороне клиента. Сервер также может сохранять заголовки HTTP-запросов и IP-адреса клиентов, но сам протокол не отслеживает предшествующие запросы.
Небезопасность HTTP
HTTP не обеспечивает шифрование данных, так как он был создан для быстрой передачи информации, и разработчики не уделяли внимание защищенности данных от перехвата или изменения.
По этой причине на свет появился HTTPS (HTTP + безопасность), который использует шифрование данных.
HTTPS работает на транспортном уровне, тогда как HTTP — на прикладном. Это дает возможность безопасно управлять соединениями за рамками самого протокола HTTP.
Защита информации особенно важна при передаче конфиденциальных данных, таких как пароли и информация о кредитных картах, так как это значительно усложняет задачу хакеров: даже если информация будет перехвачена, ее трудно расшифровать и использовать.
Кроме того, HTTP позволяет подмену данных во время передачи от сервера к браузеру, что может привести к тому, что пользователи видят в своём браузере не ту информацию, которую ожидали, или даже вредоносные материалы вместо безопасных изображений.
HTTPS также требует подтверждения домена, что делает невозможной подмену домена злоумышленниками для перехвата данных из запросов.
Крупные сервисы, такие как Google и Facebook* уже давно перешли на HTTPS, и всё больше сайтов проводит миграцию на этот протокол в связи с тем, что разработчики браузеров начинают отказываться от поддержки HTTP.
Однако для перехода на HTTPS необходимо получить SSL-сертификат, что является платной услугой и может быть достаточным основанием для отказа некоторых владельцев небольших сайтов от перехода на HTTPS и, соответственно, ставит под угрозу данные пользователей.
* Запрещены в РФ





