Где хранятся данные
Всё, что относится к проекту, лежит в папке рабочего пространства: коллекции, окружения, моки и заметки — текстовыми файлами, перехваченный трафик и история отправок — в локальной базе SQLite в служебной папке .microkoi.
В каталоге данных приложения (~/Library/Application Support/Microkoi) хранятся только настройки, список недавних пространств и корневой сертификат. Журналы пишутся в ~/Library/Logs/Microkoi.
Настройки этой машины — выбранное окружение, запущенные мок-серверы и их доступ из сети, точки останова, доверие пространствам — хранятся там же, а не в папке проекта: их нельзя подложить через репозиторий.
Приложение не отправляет нам ни трафик, ни запросы, ни сведения об использовании. Телеметрии и скрытых сетевых обращений нет: приложение обращается только к адресам, которые задали вы, — через прокси, клиент запросов и мониторы.
Корневой сертификат
Сертификат создаётся при первом обращении к прокси и уникален для установки: скомпрометировать разом всех пользователей Microkoi невозможно, потому что общего ключа не существует.
Сертификат становится доверенным только вашим действием и только после подтверждения паролем. Удалить его можно в любой момент в приложении «Связка ключей».
Закрытый ключ хранится файлом, который может читать только ваша учётная запись. Это обычный уровень защиты для настольного приложения, но о нём стоит знать: программа, запущенная от вашего имени, способна прочитать ключ. Поэтому скомпрометированная учётная запись означает и скомпрометированный сертификат — в этом случае удалите сертификат из хранилища системы и файлы из каталога данных приложения.
Чего Microkoi не делает
- Не устанавливает сертификат без вашего действия и подтверждения
- Не работает скрыто: прокси запускаете вы, а его состояние всегда видно в интерфейсе
- Не принимает подключения с других устройств, пока вы не включите это переключателем
- Не обходит привязку к сертификату и другие средства защиты чужих приложений
- Не отключает проверку сертификатов настоящих серверов для всех запросов разом
- Не передаёт ваши данные нам или третьим лицам
Подключения из локальной сети
Чтобы перехватывать трафик телефона, прокси нужно открыть для локальной сети. Это делает только явный переключатель, и пока подключения разрешены, у прокси на экране трафика стоит пометка «в сети», а подключившиеся устройства перечислены по адресам.
Прокси без авторизации доступен любому устройству этой сети, поэтому включайте подключения только в доверенной сети и на время отладки. Устройства из сети не могут обратиться через прокси к адресам самого компьютера — localhost, 127.0.0.0/8 и адресам его сетевых интерфейсов, — поэтому службы, запущенные на компьютере для разработки, им недоступны.
Страница сертификата для телефона отдаёт только сам сертификат и его отпечаток для сверки. Закрытый ключ никогда не покидает компьютер.
Пространства из чужих репозиториев
Всё, что лежит в пространстве из репозитория, мог подготовить другой человек. Поэтому папка, которую на этом компьютере ещё не открывали, открывается как новая: мок-серверы и мониторы из неё сами не запускаются, пока вы не нажмёте «Доверять».
- Файлы пространства, подменённые символическими ссылками, не читаются и не перезаписываются — приложение не выйдет за пределы папки
- Файлы читаются с ограничением размера, поэтому подложенный огромный файл не исчерпает память
- Тело мока приложение показывает, но никогда не открывает и не запускает
- Заметка не загружает картинки с внешних адресов — иначе её открытие отправляло бы запрос туда, куда выбрал автор
Мок-серверы
Мок-сервер разрешает CORS только локальным источникам — localhost, *.local и адресам частных сетей, — чтобы с ним могло работать веб-приложение из разработки. Сайты из интернета разрешения не получают: иначе любая открытая в браузере страница прочитала бы ответы сервера, а в них часто лежат данные из перехваченного трафика.
Пока сервер запущен, его ответы может прочитать любая программа на этом компьютере. Не оставляйте в ручках настоящие токены и персональные данные.
Секреты в окружениях
Переменные окружений хранятся открытым текстом в файлах рабочего пространства. Флаг «секрет» скрывает значение в интерфейсе, но не шифрует его на диске, — редактор окружений прямо об этом предупреждает.
Если пространство лежит в репозитории, заведите для токенов и паролей отдельное окружение и добавьте его файл в .gitignore проекта. Общие адреса и несекретные параметры можно хранить в окружениях, которые попадают в git.
Допустимое использование
Microkoi — инструмент отладки. Перехватывайте и анализируйте только трафик своих устройств и приложений либо трафик, на обработку которого у вас есть разрешение владельца. Если перехваченный трафик содержит персональные данные других людей, за законность их обработки отвечает пользователь.