О модели взаимодействия клиент-сервер простыми словами. Архитектура «клиент-сервер» с примерами
Привет, посетитель сайта ZametkiNaPolyah.ru! Продолжаем рубрику Сервера и протоколы. В этой записи мы поговорим о том,…
Привет, читатель блога ZametkiNaPolyah.ru! Продолжим знакомиться с протоколом HTTP в рубрике Серверы и протоколы и ее разделе HTTP протокол. Данная запись в большей степени не о том, какие есть механизмы в HTTP, отвечающие за безопасность, а скорее — это общие рекомендации для того, чтобы сделать передачу данных по HTTP безопасной. Механизмов безопасности передачи данных в HTTP практически нет, а то, что есть трудно назвать механизмом, отвечающим за безопасность.
Безопасность в HTTP протоколе
Содержание статьи:
ЕПо сути, протокол HTTP не предусматривает никаких механизмов защиты данных пользователя и веб-серверов, если не считать базовой схемы аутентификации клиентов на сервере, кодирования информации и положений безопасности в стандарте HTTP 1.1. Хотя, следуя рекомендациям безопасности HTTP протокола, разработчики могут разрабатывать свои приложения с большим уровнем защищенности. Давайте рассмотрим положения о безопасности HTTP протокола.
Если на вашем сервере хранится информация, которая должна быть доступна только определенному кругу людей, то вы можете использовать базовый метод аутентификации клиентов на сервере, этот метод не гарантирует безопасность данных на вашем сервере. Но, стоит заметить, что протокол HTTP никак не препятствует шифровать ваши данные сервере и использовать другие методы для повышения безопасности хранения данных.
Самый существенный недостаток базовой аутентификации на сервере и в то же время самая большая брешь в безопасности HTTP сервера заключается в том, что логин и пароль пользователя передается в HTTP сообщение в незашифрованном виде, поэтому вам стоит использовать дополнительные методы шифрования при использование базовой аутентификации.
Брешь в безопасности не ограничивается тем, что кто-то может перехватить HTTP запросы или HTTP ответы с незашифрованными данными, но и в том, что пользователь может вместо желаемого ресурса попасть на вредоносный клон, в котором он пройдет аутентификацию, тем самым оставив свои учетные данные злоумышленнику.
Сервер может возвращать клиенту сообщение с кодом состояния 401 (код ошибки клиента, который говорит о том, что он не авторизован) и вместе с кодом ошибки 401 сервер может отправить список методов аутентификации в том порядке, в котором настроит администратор, обычно в порядке уменьшения безопасности, для этого сервер использует поле заголовка WWW-Authenticate.
Сервер обычно записывает в специальный файл все запросы пользователя и ответы на них, то есть ведет лог. На некоторых сайтах лог запросов может представлять интерес для злоумышленников. Поэтому реализации серверов должны позаботиться о безопасности лога HTTP запросов.
Протокол HTTP универсальный протокол передачи данных, а это значит, то по данному протоколу можно передавать, в принципе, любую информацию. Так же у HTTP протокола нет никаких средств или механизмов, которые могли бы отрегулировать содержимое HTTP сообщения (HTTP объект). Собственно, передача содержимого и безопасность передачи содержимого лежит на клиентском и серверном программном обеспечение, поэтому к небезопасным полям заголовка HTTP сообщения можно отнести: Server, Via, Referer, From. Так как они могут помочь идентифицировать название и версии программ и, соответственно, воспользоваться багами этих программ, а также по этим поля можно узнать URI (URI в HTTP), на которые заходил пользователь (URI, кстати, может быть приватным), или узнать его контактные данные.
Основной задачей DNS сервера является преобразование доменных имен сайта в IP-адреса и наоборот. Соответственно, URI, который мы пишем в HTTP запросе будет транслироваться в IP адрес для успешной связи с сервером на третьем уровне модели OSI.
Аспект безопасность соединения по HTTP протоколу, связанному с подменой DNS, целиком и полностью лежит на бразуерах. В тонкости и особенности реализации мы вдаваться не будем, каждый браузер имеет собственные механизмы и реализации.
Не забывайте делиться своим мнением в комментариях и оставлять отзывы, это поможет сделать нашу работу лучше, с уважением ZametkiNaPolyah.ru!
Кирилл, а статьи по SSL и TLS будут и про шифрование при передачи данных по HTTP? Статья про безопасность есть, а безопасности нет! 🙂
Да, планирую, но не могу сказать насколько скоро это будет. Во-первых, сейчас пишу в блог немного на другие темы. Во-вторых, сперва будет серия публикаций про сервер Apache, там, кстати, коснемся аспекта безопасности передачи данных по HTTP, а уже потом только про SSL.