Перейти к содержанию

Геолокация нативных мобильных приложений

Требования применяются к приложениям 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 и классифицирован отдельно.