Просто хотел добавить к последнему ответу. Если вы используете HTTP в качестве протокола соединения:
- использовать HTTPS с TLS1.2
- используйте закрепление ключей, чтобы проверить, действителен ли сертификат сервера
- использовать HSTS для предотвращения дополнительных будущих атак MitM (предотвращает атаки HTTPS-> HTTP downgrade)
- не предлагать HTTP (или автоматически обновляться до HTTPS)
- если возможно, используйте проверку SSL-сертификата на стороне клиента для проверки личности клиента
- допускает идеальную прямую секретность (PFS)
Если вы используете собственный протокол (не HTTPS), то:
- внедрить TLSv1.2
- использовать закрепление сертификата (по крайней мере на стороне сервера, если возможно на стороне клиента)
- убедитесь, что вы реализуете идеальную секретность пересылки