Достаточно ли HTTPS, чтобы избежать повторных атак?

10

Я раскрываю несколько методов REST на сервере для мобильного приложения.

Я хотел бы избежать того, чтобы пользователи могли анализировать, как создаются методы HTTP (из мобильного приложения), а затем снова отправлять их на сервер. Пример :

  • Мобильное приложение отправляет запрос
  • Пользователь использует прокси и может проверить, что происходит в сети
  • Пользователь видит и сохраняет запрос, только что отправленный мобильным телефоном.
  • => Теперь я не хочу, чтобы пользователь мог вручную отправить этот запрос

Достаточно ли защищать сервер через HTTPS?

MartinMoizard
источник

Ответы:

7

HTTPS может быть достаточно для защиты сервера от атак воспроизведения (одно и то же сообщение отправляется дважды), если сервер настроен на разрешение протокола TLS только в соответствии с разделом F.2 раздела rfc2246.

Исходящие данные перед передачей защищены MAC. Чтобы предотвратить атаки воспроизведения или модификации сообщений, MAC вычисляется из секретного MAC-адреса, порядковый номер [...]

Emirikol
источник
1
Это больше не относится к (черновому) TLS 1.3, если включены билеты 0-RTT . Кроме того, хотя это и не входит в сферу охвата вопроса, атака воспроизведения все еще может быть смонтирована даже с текущими версиями TLS при использовании веб-браузера .
Алексей Шпилкин
9

HTTPS просто означает, что передаваемые данные зашифрованы, так что только клиент и сервер могут дешифровать их (в идеальном мире, не говоря о атаках MITM и т. Д.).

Таким образом, ничто в протоколе не остановит повторные атаки.

Вам нужно будет встроить некоторый механизм предотвращения атак повторного воспроизведения (что-то вроде маркеров с истекающим сроком действия или маркеров, которые становятся недействительными после завершения процесса), чтобы гарантировать, что ваше приложение не уязвимо для атак воспроизведения. Этот механизм можно использовать с обычным HTTP.

Одед
источник
8
Этот ответ, кажется, предполагает обратное: stackoverflow.com/questions/2769992/… Есть идеи, почему разница?
Брайан Армстронг
1
@BrianArmstrong Я думаю, что проблема в том, что HTTPS имеет разные реализации, как указано в ответе Эмириколя. Некоторые протоколы предотвращают атаки воспроизведения, а некоторые - нет. (Это происходит при обмене ключами, обмен ключами RSA предотвращает, а анонимный обмен ключами - нет. Ref: tools.ietf.org/html/draft-ietf-tls-ssl-version3-00#appendix-F ) Так вот почему токены ( как csrf) важны (справочный сценарий здесь: stackoverflow.com/a/2770135/4206925 )
MewX