Ответ
При перехвате сетевых запросов объем доступной информации кардинально зависит от использования шифрования (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")
Как защититься?
- Всегда используйте HTTPS для всех коммуникаций.
- Не передавайте чувствительные данные (пароли, токены) в параметрах URL, так как они могут логироваться на серверах и в браузерах.
- Для аутентификации используйте стандартные подходы, например, передачу JWT в заголовке
Authorization: Bearer <token>
.