Мы работаем над мобильным приложением, которое взаимодействует с бэкэнд через REST API через SSL. Мобильное устройство выполняет проверку сертификата при вызове API (используя стандартные библиотеки в мобильных инфраструктурах). Если мы попытаемся подключить мобильное устройство через прокси (например, Charles), мы увидим весь трафик, но он зашифрован - как и ожидалось. Однако, если я разрешаю прокси SSL, создаю корневой сертификат и устанавливаю этот сертификат на моем устройстве, я увижу все данные в ясном тексте через Чарльз - опять же, как и ожидалось.Защита мобильного приложения от атаки «человек-в-середине»
Вопрос в том, как предотвратить это? Основная цель, конечно же, состоит в том, чтобы предоставлять данные ТОЛЬКО, если на устройствах разрешен сервер с допустимым сертификатом для этого сервера.
Означает ли это, что нет способа предотвратить это? Независимо от того, насколько сложным является решение. –
Как может быть? Цепочка доверия сертификата сообщает вам, доверять ли серверу, к которому вы подключаетесь. Но если кто-то может установить корневой сертификат перед тем, как вы подключитесь в первый раз, нет способа определить, является ли цепочка доверия подлинной. – MvdD
Для кого-то, кто сможет изменить корневые сертификаты на устройстве, будет означать, что у них уже есть высокий уровень доступа к устройству, и если они действительно хотели, это может повредить, независимо от используемого SSL. – Peter