Как защитить Air-приложение от подмены API сервера?
Есть клиент на Air, который выполняет нехитрые запросы к api нашего сервера. Клиент распостраняется бесплатно всем желающим. Сервис имеет бесплатный режим, и доп. платные опции.
Функционал сервера легко копируется, если «послушать» трафик. И cчитается, что декомпилировать Air приложение — пара пустяков.
Коммуникации — по https, но как верифицировать в Air, что коммуникации происходят именно с единственным допустимым сервером, я пока не разобрался.
Как защитить бизнес от того, что злодеи поднимут «китайский» аналог нашего сервера, и будут использовать с ним наш классный клиент, прописав, например, в hosts ip своего клона?
Может, есть какой-то более общий «правильный» подход, чтобы засекьюрить связку полуоткрытого клиента с закрытым сервисом?
В чем тогда ценность вашего сервера (и нафиг он вообще нужен), если перехватывая трафик, можно легко сделать аналогичный?
Способ примитивной проверки — использовать https и проверять отпечатки и путь сертифката, но даже в этом случае клиента можно декомпилировать и убрать проверку.
Например, QIWI в своём терминальном софте проверяет localhost и пробует резолвить IP адреса хостов через свой DNS. Проверка сертификата https. Плюс все запросы/ответы подписываются MD5. Но в открываемом исходными кодами клиенте это невозможно сделать эффективно.
Значит надо переносить максимум ценности на сервер, а клиента использовать как smart-браузер для вашего Интернет-сервиса.
Перенесите часть логики на серверную сторону. Например, интерфейс строится на основании кода, который присылается с сервера. Это сильно упрощенный пример, но, думаю, вы сможете развить мысль дальше. Пока часть функционала клиента будет для воров черным ящиком, вы в относительной безопасности.