> Что такое MITM (man-in-the-middle) атака и как с ней бороться (Go)

Уровень: junior · Роль: backend · Категория: Технические вопросы

Компании: Юрент

Стек: Go

> Пример ответа

MITM-атака (человек посередине) - это тип кибератаки, при которой злоумышленник тайно перехватывает и, возможно, изменяет передаваемые данные между двумя сторонами (например, клиентом и сервером), оставаясь незамеченным. В контексте бэкенда на Go это может происходить при незащищённых HTTP-соединениях, подмене DNS или ARP-спуфинге.

Методы борьбы с MITM в Go:

  1. Использование HTTPS/TLS - обязательное шифрование трафика. В Go это реализуется через http.ListenAndServeTLS() или настройку tls.Config с валидными сертификатами. Клиент должен проверять сертификат сервера (например, через tls.Config{InsecureSkipVerify: false}).
  2. Проверка сертификатов - использование публичных CA или собственного CA с корректной цепочкой доверия. Избегать InsecureSkipVerify: true в продакшене.
  3. HSTS (HTTP Strict Transport Security) - настройка заголовка Strict-Transport-Security в ответе сервера, чтобы браузеры/клиенты использовали только HTTPS.
  4. Certificate Pinning - привязка к конкретному сертификату или его хешу. В Go можно реализовать через кастомный tls.Config.VerifyPeerCertificate.
  5. Шифрование на уровне приложения - дополнительное шифрование данных (например, с помощью NaCl или AES-GCM) даже поверх TLS, если есть риск компрометации TLS.
  6. Защита от ARP-спуфинга - на уровне сети (не специфично для Go), но бэкенд может логировать подозрительные IP/MAC.

Пример простой защиты в Go:

GO
server := &http.Server{
Addr: ":443",
TLSConfig: &tls.Config{
MinVersion: tls.VersionTLS12,
CipherSuites: []uint16{
tls.TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
},
},
}
log.Fatal(server.ListenAndServeTLS("cert.pem", "key.pem"))

Клиентская сторона:

GO
tr := &http.Transport{
TLSClientConfig: &tls.Config{InsecureSkipVerify: false},
}
client := &http.Client{Transport: tr}

Важно также валидировать входящие данные и использовать подпись запросов (например, HMAC) для дополнительной защиты от подмены.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью