Геолокация нативных мобильных приложений¶
Требования применяются к приложениям iOS и Android, использующим координаты
устройства, значимые изменения местоположения или background location. Уровни
обязательности определены в корневом README.md.
MOB-GEO-001. Режим и разрешение геолокации¶
Уровень: MUST
Применяется к: запросу или продолжению получения местоположения устройства
Приложение должно выполнять MOB-SEC-006 и запрашивать минимально достаточные
точность, длительность и foreground- либо background-режим непосредственно
перед пользовательским сценарием, которому они необходимы. Background location
допускается только для явно объявленной продолжающейся функции и должна
прекращаться после её завершения, logout, отзыва разрешения или отключения
функции.
Отказ, ограниченная точность и отзыв разрешения не должны блокировать независимые сценарии. Если сценарий допускает меньшую точность или ручной выбор места, приложение должно предоставлять этот определённый результат без повторного принуждения к более широкому разрешению.
Обоснование¶
Постоянное или избыточно точное наблюдение расширяет privacy-риск и расход ресурсов за пределами пользовательского намерения.
Проверка¶
- тест foreground, background, approximate и precise permission;
- тест allow, deny, ограниченной точности и revoke во время операции;
- проверка остановки обновлений после завершения функции и logout;
- тест независимого сценария без разрешения.
Исключения¶
Системная функция, которая получает местоположение без передачи координат приложению, MAY не запрашивать отдельное разрешение приложения, если это подтверждено фактическим platform flow.
MOB-GEO-002. Качество и актуальность результата¶
Уровень: MUST
Применяется к: координатам, используемым для прикладного результата
Результат должен включать время измерения и предоставленную платформой оценку
точности. Контракт сценария должен задавать максимальную давность и минимально
приемлемую точность до использования координат. Отсутствие разрешения,
недоступность provider, timeout, устаревший результат и недостаточная точность
должны иметь различимые исходы; они не должны заменяться координатами 0,0,
последним известным значением без признака давности или фиктивной точностью.
Поздно полученное измерение с более ранним временем не должно незаметно перезаписывать более новое принятое состояние.
Обоснование¶
Последняя сохранённая координата может относиться к другому времени и месту, а нулевое значение выглядит как действительное положение.
Проверка¶
- тест свежего, устаревшего и недостаточно точного измерения;
- тест denied, provider unavailable и timeout;
- тест переставленных по времени результатов;
- проверка отсутствия фиктивных координат и точности.
Исключения¶
Ручной выбор региона или адреса не является измерением устройства, но должен иметь отдельный тип источника и не интерпретироваться как device location.
MOB-GEO-003. Доверие и жизненный цикл геоданных¶
Уровень: MUST
Применяется к: использованию, хранению или передаче device location
Координаты устройства должны считаться недоверенным вводом и не должны быть единственным доказательством identity, права доступа, физического присутствия или выполнения защищённого действия. Решение, для которого допустимы spoofing или низкая точность, должно иметь явно определённый риск; security-критичное решение требует независимого подтверждения.
Проект должен классифицировать геоданные, передавать и хранить минимально
необходимую точность и задавать конечный срок хранения. Данные должны удаляться
после истечения цели, logout или отзыва согласия, если другое основание
хранения не зафиксировано политикой. Передача в telemetry должна соблюдать
MOB-OBS-006.
Обоснование¶
Координаты могут быть подменены и одновременно раскрывают чувствительную историю перемещений.
Проверка¶
- security-тест spoofed location;
- review независимого подтверждения защищённого действия;
- проверка точности передаваемых данных, retention и удаления;
- тест telemetry filtering.
Исключения¶
Публично выбранный пользователем регион MAY храниться как настройка без permission геолокации, если он не содержит историю device location и классифицирован отдельно.