«Скачивая приложение из Google Play, я считаю, что его проверили на вирусы. А ваше кто проверял?» Вопрос задал клиент, и он справедливый: у наших приложений нет карточки в магазине — они открываются в браузере по адресу. Ответ короткий: проверить приложение на вирусы вы можете сами, и это не единственная проверка, которая вам нужна. Куда важнее знать, уходят ли ваши документы на чужой сервер, — а на этот вопрос магазин не отвечает.
Разберём по шагам: что магазин действительно проверяет, почему это не ответ про ваши данные и как за минуту убедиться самому — без специальных знаний.
Что на самом деле проверяет магазин приложений
Проверка в магазине есть, и она серьёзная. Приложение прогоняют автоматические проверки, часть смотрят руками, на устройстве работает Google Play Защита. Ищут они вредоносный код: программу, которая шифрует файлы ради выкупа, крадёт пароли от банка, подписывает на платные услуги.
Эта работа отсекает откровенно вредные вещи. Но вопрос «куда уходят мои документы» она не закрывает — и вот почему.
Отправка данных на сервер разработчика — не вирус. Это обычное, разрешённое поведение приложения: так работают почта, облачные хранилища, редакторы документов, любой сервис с аккаунтом. Магазин не может это запретить, он может только потребовать, чтобы разработчик о сборе данных рассказал.
Именно так устроен раздел «Безопасность данных» в карточке приложения: заполняет его сам разработчик. В справке Google Play прямо написано, что проверка не предназначена для контроля точности и полноты этих сведений — за достоверность отвечает разработчик. То же и с политикой конфиденциальности: это заявление о намерениях, а не механизм.
Получается честная картина: магазин отвечает на вопрос «нет ли здесь вируса», а на вопрос «что приложение делает с моими данными» отвечает декларация разработчика. Два разных вопроса — и «проверено магазином» закрывает только первый.
Почему для документов важнее второй вопрос
Если приложение обрабатывает договоры, паспорта, счета и карточки контрагентов, риск редко выглядит как вирус. Он выглядит буднично: файл загрузился на сервер сервиса, полежал там, попал в резервную копию, а через год сервис взломали — и утечка персональных данных стала новостью. Вредоносного кода в этой цепочке нет ни на одном шаге.
Поэтому вопрос, который стоит задавать любому разработчику, звучит не «проверено ли приложение», а: может ли оно физически отправить мои данные и как мне это проверить.
Наш ответ: приложению нечем отправить
Наши готовые приложения — сканер документов и заполнение документов по шаблону — работают в браузере. Снимок, сборка PDF, распознавание текста, подстановка реквизитов в бланк — всё это происходит на вашем устройстве.
Сервер отдаёт только само приложение: страницы и программный код, как любой сайт. Дальше связь обрывается, и это не обещание, а правило, которое выполняет браузер:
Content-Security-Policy: connect-src 'none'
connect-src 'none' — прямой запрет странице отправлять куда бы то ни было любые данные. Не нам, не рекламной сети, не счётчику посещаемости. Запрет соблюдает браузер — Chrome, Safari, Яндекс Браузер, — а не наша добросовестность. Если бы мы захотели забрать ваш файл, у приложения просто нет для этого канала.
Отсюда же следствие, которое видно невооружённым глазом: приложение работает без интернета. Откройте его один раз — дальше сеть не нужна, потому что файлу некуда идти.
Как проверить приложение на вирусы и утечку данных самому
Три проверки, от самой простой к самой строгой. Первую может сделать кто угодно, третью — не открывая наш сайт вообще.
1. Режим полёта. Откройте приложение с интернетом, включите на телефоне режим полёта и поработайте: отсканируйте документ, заполните бланк. Всё работает — значит, ваши файлы никуда не уходили. Сервис, который обрабатывает документы у себя на сервере, в режиме полёта показал бы ошибку связи.
2. Вкладка «Сеть». На компьютере нажмите F12 (или Ctrl+Shift+I), откройте вкладку «Сеть» и поработайте в приложении. Там видно каждый запрос, который уходит со страницы, — список останется пустым. Там же, в первом запросе, виден и сам заголовок connect-src 'none'.
3. Внешняя проверка. Сервис securityheaders.com читает заголовки со стороны и ставит оценку. У обоих наших приложений высшая — A+, все шесть проверяемых заголовков на месте. Запустите проверку сами: результат считается заново в момент запроса, повлиять на него мы не можем. В этом и смысл.
Тот же способ работает с любым другим разработчиком. Если ответ на вопрос «как проверить» сводится к «прочитайте нашу политику конфиденциальности» — вам предлагают поверить, а не убедиться.
«Не из магазина» — не значит «мимо правил»
Установка чужого файла APK в обход магазина действительно рискованна: на телефоне запускается программа, за которую никто не отвечает. Веб-приложение устроено иначе, и разница принципиальная.
Оно открывается в браузере по адресу, который вы видите в строке. Браузер держит его в песочнице: страница видит только то, что вы дали ей сами — выбранный файл, снимок с камеры, — и не видит ни остальных файлов устройства, ни данных других сайтов. Эти правила соблюдает браузер, и они одинаковы для всех страниц, включая наши.
При этом приложение без установки ставится на телефон как обычное: открыть адрес в браузере и выбрать «На экран «Домой»» на iPhone или «Установить приложение» на Android. Значок появляется рядом с остальными, а магазин в этой цепочке не участвует — и обновления приходят сами, без загрузки новой версии.
Про разрешения скажем без перегибов. Мобильному приложению права можно отозвать в настройках — и на Android, и на iOS. Разница не в списке прав, а в проверяемости: пока право выдано, что именно приложение делает в фоне, вы не видите, и запретить ему отправку данных нельзя в принципе — это его обычная работа. У веб-приложения такого права нет вовсе, а запрет виден в браузере в любой момент.
Что это значит для компании
У нас два разных случая, и смешивать их нечестно.
Готовые приложения держат данные на вашем устройстве — сканер и заполнение документов устроены так, как описано выше.
Корпоративные системы — CRM, портал, учёт заказов — работают с общей базой: заявку видит вся смена, документы ищутся за прошлый год. Такая база стоит на сервере вашей компании, и доступ к ней определяете вы. Мы систему делаем и передаём.
Общее правило одно: к нам ваши данные не попадают ни в первом случае, ни во втором. Разница только в том, где они лежат — на устройстве сотрудника или на вашем сервере.
Если нужен инструмент под вашу задачу — с теми же правилами, работающий на телефоне без магазинов приложений, — мы его сделаем. А подробный разбор со всеми проверками и ответами на частые вопросы собран на странице «Безопасность».
Коротко: частые вопросы
- Приложения в Google Play и App Store проверены — значит, они безопасны?
- Проверены на вредоносный код, и это действительно так: магазин прогоняет приложение автоматическими проверками и выборочно смотрит руками. Но вопрос «уходят ли мои документы на чужой сервер» эта проверка не решает. Отправка данных разработчику — обычное, разрешённое поведение приложения, а не вирус. Что именно приложение собирает, написано в карточке в разделе «Безопасность данных», и заполняет этот раздел сам разработчик: в справке Google прямо сказано, что проверка не предназначена для контроля точности этих сведений.
- Как проверить приложение на вирусы самому?
- Для установленного приложения есть проверка на устройстве: Google Play Защита на Android и антивирус на компьютере ищут известный вредоносный код. Но полезнее другая проверка — куда приложение отправляет данные. Она делается за минуту: откройте приложение один раз с интернетом, включите режим полёта и поработайте в нём. Если всё продолжает работать, отправлять ваши файлы приложению просто незачем.
- Приложение не из магазина — это опаснее?
- Зависит от того, что за приложение. Установка чужого файла APK мимо магазина действительно опасна: вы запускаете на телефоне программу, за которую никто не отвечает. Веб-приложение — другое: оно открывается в браузере по адресу, который вы видите, и живёт в его песочнице. У него нет доступа к чужим файлам, к контактам и к памяти других программ, а адрес, с которого оно пришло, всегда виден в строке браузера.
- Что такое «песочница браузера» простыми словами?
- Правила, по которым браузер держит страницу в отдельной комнате. Страница видит только то, что вы ей дали сами — выбранный файл, снимок с камеры, — и не видит ни остальных файлов на устройстве, ни данных других сайтов. Эти правила соблюдает браузер, а не разработчик сайта, и они одинаковы для всех.
- Как понять, что приложение не отправляет данные?
- Открыть инструменты разработчика в браузере (клавиша F12 или Ctrl+Shift+I), перейти на вкладку «Сеть» и поработать в приложении. Там видно каждый запрос, который уходит со страницы. У наших приложений список останется пустым: страница отдаётся с заголовком `Content-Security-Policy: connect-src 'none'` — это запрет браузеру отправлять с неё любые данные, и выполняет его браузер.
- А если разработчик однажды тихо снимет этот запрет?
- Заголовки отдаёт сервер, и они видны в браузере в любой момент. Как только `connect-src` перестанет быть `none`, это станет заметно на вкладке «Сеть» у любого, кто откроет инструменты разработчика. Заодно это увидит внешняя проверка — securityheaders.com считает оценку заново при каждом запросе, и повлиять на неё мы не можем.
- Корпоративное приложение тоже держит данные на устройстве?
- Нет, и это честнее сказать прямо. Корпоративной системе нужна общая база: заявки видит вся смена, документы ищутся за прошлый год. Данные в ней лежат на сервере вашей компании, а не у нас — мы такую систему делаем и передаём. Правило общее для обоих случаев: к нам ваши данные не попадают.
- Куда сообщить, если нашли уязвимость в вашем приложении?
- На security@businessaxis.ru. Контакт продублирован в файле /.well-known/security.txt по стандарту RFC 9116 — исследователи ищут его именно там. Разбираем каждое сообщение.