Что можно узнать, перехватив HTTP и HTTPS запросы?

Ответ

При перехвате сетевых запросов объем доступной информации кардинально зависит от использования шифрования (HTTPS).

При перехвате HTTP-запроса (нешифрованного)

Злоумышленник может получить практически всю информацию в открытом виде:

  • URL и все его параметры: http://example.com/login?user=admin&pass=123
  • Метод запроса: GET, POST, PUT и т.д.
  • Все заголовки (Headers): Cookie, User-Agent, Authorization и другие, которые могут содержать сессионные данные.
  • Тело запроса (Body): для POST/PUT запросов это могут быть логины, пароли, номера карт, личные сообщения и любые другие передаваемые данные.

При перехвате HTTPS-запроса (шифрованного)

Благодаря TLS-шифрованию, основное содержимое запроса защищено:

  • Что защищено (зашифровано): URL (кроме домена), параметры, заголовки и тело запроса.
  • Что остается видимым (метаданные):
    • IP-адрес сервера и клиента.
    • Доменное имя сервера (благодаря механизму SNI, Server Name Indication, который необходим для работы виртуального хостинга).
    • Примерный объем переданных данных.

Пример уязвимого кода на Go (использование HTTP):

// ВНИМАНИЕ: Пароль передается в открытом виде в URL!
resp, err := http.Get("http://example.com/login?user=admin&pass=123")

Как защититься?

  1. Всегда используйте HTTPS для всех коммуникаций.
  2. Не передавайте чувствительные данные (пароли, токены) в параметрах URL, так как они могут логироваться на серверах и в браузерах.
  3. Для аутентификации используйте стандартные подходы, например, передачу JWT в заголовке Authorization: Bearer <token>.