22 апреля 2018
Беседка №185. Всевидящее око приложений
Илья Субботин
Благодаря Facebook мы снова заговорили о разрешениях приложений. И оказалось, что их «аппетиты» значительно выросли и есть, о чем задуматься…
В прошлом месяце стало известно, что Facebook хранит журналы звонков пользователей Android-устройств, которые предоставили соответствующие разрешения в эпоху до Android 4.1 Jelly Bean. Совсем недавно в ходе дачи показаний Марком Цукербергом в Сенате два представителя спросили, может ли Facebook прослушивать их частные беседы посредством микрофона в устройстве и использовать полученные данные для предоставления им пугающе специализированных рекламных приложений.
Цукерберг ответил на вопрос о теории заговора вокруг микрофонов устройств категорическим «нет» и пояснил, что у Facebook нет доступа к аудио, когда люди записывают видео для Facebook на своих устройствах: «На мой взгляд, это довольно очевидно. Но я просто хотел убедиться, что мои пояснения по данному вопросу были исчерпывающими».
Но по итогам «расшаркиваний» Цукерберга перед Конгрессом, пусть на вид ясных и исчерпывающих, люди по-настоящему запутались, к какой информации имеют доступ приложения на их смартфонах. Это отчасти обусловлено разрешениями приложений: они чересчур упрощены и созданы таким образом, чтобы предлагать минимум информации в то время, как запрашиваются разрешения. Да, улучшились приложения, а с ними и разрешения, но этого недостаточно, чтобы идти в ногу с утончёнными технологиями сбора информации, которыми наполнен окружающий нас мир.
Это может казаться очевидным на данном этапе, но мобильные приложения (не только Facebook) могут собрать невероятное количество информации от каждого взаимодействия. Приложения для iOS и Android способны получать доступ к микрофону и камере устройства, ленте фотографий, местоположению, календарю, контактам, датчикам движения, распознаванию речи и учётным записям в социальных сетях.
Некоторые разрешения необходимы: приложение для обработки фото не будет работать без доступа к камере, как и Uber не будет функционировать без доступа к геолокации. Отказ от предоставления разрешений приведёт к нарушению работы приложения. Но при появлении определённых закономерностей информация от датчиков может открыть больше, чем могут подумать пользователи.
Один разработчик Android-приложения, пожелавший остаться независимым, дабы не говорить от лица компании, отметил, что как только вы предоставляете доступ к местоположению, разработчики приложений могут собрать информацию о координатах и высоте вдобавок к местонахождению единичных объектов. Другими словами, приложение сможет узнать, на каком этаже высотки вы живёте. Иш Шабазз, независимый разработчик под iOS, говорит, что как только у приложения появляется разрешение на доступ к местоположению, то активируется «API, отслеживающий, как часто вы посещаете то или иное место. Эта информация может использоваться законно и в дружелюбных целях. Как бы то ни было, если вы ведёте противоправную деятельность, я уверен, что информация может использоваться против вас».
Арно Сетлюр, бывший руководитель разработки в Yahoo, сейчас владеет расположенной в Кремниевой Долине аналитической фирмой Auryc. Он рассказывает, что один из его клиентов, приложение для путешественников, нашёл интересные поведенческие закономерности для своих пользователей в зависимости от того, как они держат свои устройства.
Сетлюр: «Мы обнаружили, что ночью во время всплесков активности в использовании приложения происходило множество поворотов устройства с целью смены его ориентации. Сначала люди пользовались вертикально, потом поворачивали девайс горизонтально. Мы поняли, что люди планировали свою следующую поездку и рассматривали фото, лёжа в постели и повернув смартфон горизонтально».
Это – просто выводы, о таких любят поболтать маркетологи, но в приложениях бывают и явные «перегибы». Социальное приложение Path загружало списки контактов пользователей на свои серверы, клиент Pokemon Go способен просматривать и изменять практически любую информацию в вашей учётной записи Google, а Meitu (приложение для создания аниме-версии вашего аватара) требовало доступ к GPS и SIM-карте. Разрешения для приложений выходят на повестку дня именно после огласки таких нарушений частной информации. Разрешения должны существовать как практичный барьер между разработчиками и конкретными наборами информации в вашем устройстве. Вот появляется запрос разрешения из при ложения, и владелец смартфона решает, стоит ли «открывать эту дверь». Иногда они сопровождаются объяснениями, на самом деле сама платформа поощряет это. Вот что написано в документации разработчика под Android: «Будет лучше, если объяснить пользователю необходимость разрешений для приложения перед тем, как давать команду requestPermissions()».
Но их может быть недостаточно. Объяснение необходимости разрешения доступа к камере в приложении на Facebook на iOS гласит следующее: «Возможность снимать фото и записывать видео». Не упоминаются некоторые более продвинутые технологии, которые получают информацию из выложенных вами фотографий. Некоторые разработчики просто добавляют в объяснения фразу «и так далее». Объяснения по поводу геолокации: «Facebook использует эту информацию для работы некоторых функций, помощи пользователям в поиске мест и другого». Snapchat использует микрофон «для записи аудио, видеочатов и другого».
Apple и Google определяют работу экосистем и принципы работы с разрешениями приложений. Но, по большому счету, по части исполнения принципов они полагаются на разработчиков. Разработчики не хотят ошеломить пользователей, они полагаются на понимание (или непонимание) этих принципов потребителями.
Разрешения приложений для iOS и Android эволюционировали вместе с каталогами приложений под каждую ОС. Три года назад с выпуском Android 6.0 Google начала обязывать разработчиков спрашивать у людей разрешения на доступ к разрешениям не непосредственно после установки (когда они вероятнее всего нажмут «Принять» и забудут обо всей отданной информации). В том же обновлении Android пользователи получили возможность управлять каждым разрешением индивидуально, а не скопом. В Android 7.0 разработчикам запретили встраивать наложения в таблички с разрешениями, чтобы люди по ошибке не нажали на них.
Apple по сравнению с Google обычно более взыскательна. Как и в Android, в iOS можно контролировать разрешения как в настройках приватности, так и на уровне приложения. С выходом iOS 11 в прошлом году Apple предложила опцию «Только запись» для разработчиков, которым необходим доступ к фото. Таким образом исключается просмотр изображений. В компании также переработали разрешение на доступ к местоположению: в приложении теперь обязательным условием является отображение опции «только при использовании приложения» при выдаче упомянутого разрешения. Apple никогда не предоставляла разработчикам под iOS доступ к звонкам, поэтому недавний скандал вокруг Facebook на Android невозможен для ОС из Купертино.
И всё-таки есть куда расти управлению разрешениями, так считает Норман Садей, профессор школы компьютерных наук при университете Карнеги Меллон и создатель приложения Privacy Assistant для управления разрешениями доступа к частной информации. Он до сих пор критически относится к объединению нескольких разрешений в одно.
Садей: «Количество контролирующих настроек выросло, но они, по большому счёту, объединили несколько решений и заставляют пользователей принимать невозможные решения. Приложениям могут понадобиться разрешения для работы определённой функциональности, но информация может утекать маркетологам и поставщикам рекламы».
Людям также совсем не ясно, что же происходит при отзыве того или иного разрешения. Например, вы дали приложению разрешение на доступ к фото, загрузили одно изображение и отозвали разрешение. Или год назад дали доступ к контактам, а затем аннулировали его. Главная мысль в том, что разработчики могут хранить предварительно предоставленную пользователями информацию при условии соблюдения правил по охране частной информации и других законов.
«Разрешениям сейчас очень не хватает не просто согласия и осознанного согласия, а непрерывного согласия, – считает Дженни Гебхарт, исследователь вопроса сохранности частной информации в организации Electronic Frontier. –Если Facebook хочет хранить журнал ваших звонков и сообщений, то для этого требуется больше, чем обычный клик».
Пока не установятся более строгие правила, большая доля ответственности в части понимания разрешений до сих пор лежит на пользователе. И в вопросе предоставления доступа к камере, фото, местоположению и жизни. И в доверии к прозрачности работы разработчиков.
Автор — Джон Брэндон
Действительно, история с разрешениями приложений снова вышла на передний план после скандала с Facebook и Camridge Analytica. Он ещё гремит и обещает долгие отголоски. Здесь как раз тот случай, когда приложения хотят быть умнее пользователей, но последние опомнились. Разработчикам впредь придётся более прозрачно рассказывать пользователям что и каким приложениям они разрешают, а главное — зачем.
Каждый такой случай ударяет по доверию к конкретному разработчику и приложениям в целом. Понятно, что это всё только вершина айсберга, но чтобы не бежать за фольгой для шапочек хотелось бы, чтобы в рамках крупнейших платформ был порядок с приватностью, ну или хотя бы без таких зияющих дыр, которые можно встретить сейчас.
Не пойму, к чему эти статьи?
Люди-ваш смартфон и все ваши «умные» приблуды следят за вами.
Примите это как аксиому и живите с этим
Или не пользуйтесь «благами» цивилизации
Не понимаете — так поймите.
Вы хотите соглашаться — вы и живите с этим.
А мы будем принимать меры.
Не понимаете — так проходите мимо.
Ну и «лайфхак» для тех кто хочет уберечься от слежки https://uploads.disquscdn.com/images/b15f2e76ab809c272ace2a4d30f60e6bfe8c0d76b767d548643bd21b6d3cba54.jpg
Знаете, чем мне не нравится такой сарказм? Выставлением идиотами желающих Большей приватности. Ведь отношение к «утечкам» личной информации не дискретно — бери сколько не жалко vs. жестокая паранойя, ни байта врагу. У нее более чем дофига промежуточных стадий.
А любое явление, кажущееся нормой, аксиомой, мол так принято, нужно рассматривать в контексте кем принято, как принято, когда принято, куда это ведет, с какой целью, и кому это выгодно.
ну в этом сарказме чёткая инструкция как действительно достичь приватности, а не «просто немного уменьшить фонтан данных хлещущий во все стороны» …
Я бы в наше время якам тоже не доверял ))
…и владелец смартфона решает, стоит ли «открывать эту дверь»… или приложение не будет работать.
Существует две проблемы разрешений. Оправданно запрашиваемых, но с злоупотреблением доверием при использовании, и неоправданно запрашиваемых, когда весь или основной функционал работоспособен без знания неких данных. С первой проблемой, бороться настройками бесполезно априори. Вторая, теоретически решаемая, но надо что-то делать с квалификацией пользователя, требуемой для принятия решения и ленью этого самого пользователя, не желающего дцать раз тыкать «да, разрешить». Ответ вижу только в «коллективном разуме», по принципу web of trust, с рекомендациями, что из запрашиваемого важно, а что не очень. Причем с возможностью применить рекомендации пакетом. Без этого, дробление разрешений для более точного указания, принесет скорее вред чем пользу.
а толку, зачем калькулятору на андройде доступ к телефонной книге и безлимитный интернет? стал часто себя ловить на том что слишком дофига телефон забирает время, решил поставить трекер экрана посмотреть на что я трачу время, сколько раз за день залазил на фб посмотреть котиков. на ios нашел только одну нормальную программу, это moment, но вот интересный вопрос, нафига «трекеру экрана» постоянный доступ к геопозиции? вообще нафиг доступ и почему постоянный, зачем авторы хотят следить за всеми моими перемещениями? без постоянной геопозиции приложение не будет выполнять свои основные функции, а если вообще ее запретить, то оно даже и не запустится
Все просто — это чтобы многомудрая iOS не пришибла ваш трекер по неактивности. А навигационным программам в фоне работать можно. Вот и приходится трекеру маскироваться под навигатор, чтобы иметь возможность работать в фоне.
хм… а кстати да, весьма аргумент, это единственная программа которая работает в фоне. на андройде приходилось в уведомлениях закреплять, чтобы приложение не засыпало, а тут возможно такой костыль
Справедливости ради, это, как правило, не работа в фоне, а возможность периодически просыпаться, когда меняется позиция согласно LBS/Wi-Fi. GPS (как в навигационных приложениях) тут даже не участвует.
Маскировку трекера экрана под навигатор банально не пропустит App Store Review Team.
Интернет и приватность — вещи несовместимые.
С этим утверждением несогласны хамоватые пользователи, которые искренне считают, что спрятавшись за ником одели шапку-невидимку, и на любой упрёк в хамстве самодовольно пишут «Это интернет, детка, здесь могут и на … послать». Я же исхожу из того, что общение в инете ничем не отличается от общения в реале, соответственно, нормы поведения должны соответствовать этому принципу, и инет не повод вести себя как тупое грубое быдло. Я могу спрятаться за vpn, сменить ник, зарегить аккаунт на одноразовую почту, но моё поведение от этого не изменится, и мне неважно будет ли кто-то меня «вычислять по IP» или нет. Конечно, я могу и послать заслуживающего это человека, но только если буду уверен, что лицом к лицу в реале я сделал бы то же самое.
Согласен. Все зависит от воспитания. Если человек хамит в интернете, то с большой долей вероятности он является хамом и в реальной жизни.
«Я же исхожу из того, что общение в инете ничем не отличается от общения в реале, соответственно, нормы поведения должны соответствовать этому принципу, и инет не повод вести себя как тупое грубое быдло.» Но, интернет и не повод, чтобы вести себя по другому, если человек и в реале «тупое грубое быдло»
А меня лично позабавил скандал с этой «Аналитикой», годы до «Аналитики» такого типа не было? Не было того что стоит тебе поискать какой-то товар и потом внезапно на всех страницах реклама этого товаратипа товара? А «рекомендуемые» вещи в различных своих проявлениях? А поиск в гугле том же когда ты начинаешь что то искать и часто первый же авто-вариант это именно то что тебе нужно, допустим искал…да блин унитазы те же, потом пишу в гугле «подключение» и он сам предлагает различные виды сантехники, потом через какое то время уже просто самые распространенные варианты возвращаются.
Иногда даже сам ловлю себя на мысли…Жутко то как что гугл догадывается что именно я сейчас искать буду, как он, гад, делает это 🙂
Уже хз сколько лет работает эта система, с каждым годом все лучше и лучше, все точнее и точнее угадывает, проникает во все больше мест, и вот внезапно в 18 году «все» прозрели. Оказывается выкладывая в открытый доступ информацию(интернет это открытый доступ(за редким исключением может быть) и самообман типа «Ну я же поставил галочку «личная страница»» не отменяет этого) о себе она может быть использована другими в своих целях…Вот это поворот!!
Посмотрите под другим углом. Вам пообещали, что это Личная страница, и нарушили обещание, предоставив оттуда информацию другим. Именно об этом идет речь. Всего лишь упорядочивании отношений.
Удивляюсь, что никто не упоминает свежий европейский закон о персональных данных. Где как раз эти гарантии и описаны.
Вам пообещали «надпись на заборе» — Я примерно так смотрю на ситуацию. Для меня личная информация это то что знаю только я, все остальное это публичная информация в той или иной степени.
Но да, готов признать что возможно имеет место введение в заблуждение, решать это судам нужно. Но это не отменяет того о чем я говорил.
Вот сейчас я тебе скажу что то, ты пообещаешь что никому больше не расскажешь…ну как это можно считать личной информацией? Причем речь даже не идет о умысле.
Наверно нужен отдельный закон о защите подобной информации, но нужна и ответственность за утечку, иначе смысла не будет.
Не знаю, как смотрите вы, но обсуждаемые отношения не безличные «на деревню дедушке», а вполне целевые с определенным юридическим или физическим лицом.
Прям таки пообещали? В лицензионном соглашении фейсбука написано, что они вашу информацию хранят, как зеницу ока, никак не обрабатывают и никуда ни при каких условиях не передают?
У меня для вас плохие новости….
Мне кажется производителю смартфонов было бы хорошо сделать «fake data» для всех разрешений. Тот же убер не работает без gps. А вот зачем facebook хочет мое положение или контакты? Указыаем fake data, и фб всегда видит только заданные мной координаты, или пустую книгу контактов. Много программ которые откажутся работать без разрешений, но вполне ок, если их заменить на пустышку: положение всегда фиксировано, камера всегда черная, вместо микрофона шум.
Собственно на iOS так и сделано — при отказе предоставлять ту или иную информацию, приложение получит пустоту (nil, я полагаю, не помню точно описание API).
Проблема не в том, чтобы это предоставить, а в том, что приложения разрабатывают тоже не дураки, и видя на выходе метода «ПолучитьГеоданные» nil, показывают ошибку «Мы не смогли получить геоданные, повторите попытку и т.д.»
А по поводу Facebook: помимо геотаргетинга у них есть вполне нормальные сценарии использования геолокации. Это и простановка геотегов на фото (если разрешить фото и запретить геолокацию, то фото отправляется обрезанным EXIF), и Emergency Alarm (уведомления «Все ли в порядке» при нахождении вблизи терракта/стихийного бедствия), и рекомендации групп/страниц с учетом геопривязки. Контакты, опять же, помимо таргетинга используются для поиска тех же самых контактов на Facebook, а также предложения групп/людей.
Поэтому и нужны фейк-данные. На «ПолучитьГеоданные» приложение получает случайную пару из диапазона, например 51°44′ и 36°11′ плюс-минус градус.
И по этим координатам обязательно что-то есть.
Координаты — это все-таки штука из реального мира (даже сгенерированные), там всегда что-то есть.
Да и крики будут «они генерируют случайные координаты по определённому алгоритму, уникальному для каждого пользователя!»
И что? Мне плевать, если кто-то иногда будет «находится» в моем доме, лишь бы не знали где нахожусь я. Особенно если оно им для работы не нужно. Или нужно, но эта часть функционала, не нужна мне.
Проблема в том, что приложение должно знать о том, что получает невалидные данные (в случае того же Facebook мне совершенно не хочется видеть уведомления «Подтвердите что с вами все в порядке, поскольку в вашем районе цунами» потому что сгенерированные координаты оказались вблизи района, где бушует цунами).
А поскольку приложение знает, что данные сгенерированы — оно может просто не работать. Тут уж как разработчики напишут. То есть ситуация ничем не будет отличаться от того, что есть сейчас.
Я уже писал, что это совсем другая проблема и не стоит сваливать все в одну кучу. Есть оправданно запрашиваемые разрешения, есть неоправданно. И даже в первом случае, разрешение может обеспечивать основную задачу, а может глубоко вторичную.
Как обеспечить не распознание фейковости, вопрос сугубо технический.
На примере того же Facebook я уже объяснил, как именно приложение использует геолокацию оправданно.
В большинстве случаев (исключения — всякие калькуляторы) приложения запрашивают разрешения вполне разумно и используют данные, которые они запрашивают, для своей работы. Проблема в том, что гранулярность запроса данных очень невысокая (особенно на Andorid). Скажем разрешение на «доступ к накопителю данных» открывает доступ ко всей памяти, хотя приложению, скорее всего, требуется писать и считывать конфиги из своего каталога. На iOS Dropbox/OneDrive и прочие cloud storage провайдеры просят доступ к геолокации (и это, как правило, объясняется в запросе доступа к данным), потому что это единственный способ выгружать фотографии в фоне с полным EXIF.
Конечно, доступ можно сделать еще более гранулярным, но тогда пользователь рискует утонуть в окошках «Разрешить доступ?»
Прежде чем разбираться с гранулярностью разрешений, нужно разобраться с гранулярностью приложения. Программа А умеет делать Б, В, Г и Д. Для последней задачи, нужно разрешение Е. Если Пользователь решил что эта функция ему не нужна, и разрешение не дал, что Должно Быть с другими функциями? Вот камень преткновения.
С другими функциями ничего не будет. Разрешения запрашиваются независимо и используются независимо — так описано в API. Если я дал разрешение тому же OneDrive на доступ к моим фотографиям для бэкапа, но не дал доступ к геолокации — то бэкап будет происходить, но только когда OneDrive открыт на экране.
Естественно, никто не запрещает разработчику написать логику в стиле «если у меня нет хотя бы одного разрешения — падать».
Последний случай, тоже, своего рода неоправданный запрос разрешений. Функция пользователю не нужна, но он вынужден выдать программе разрешений сверх необходимого, чтобы пользоваться другой функцией приложения.
То есть оправданность определяет не разработчик, он устанавливает только верхнюю планку, а пользователь, исходя из решаемых с помощью программы задач.
Если решить этот вопрос, напряженность уже прилично спадет. И один из вариантов решения — фейковые данные.
Не совсем так.
Все начинается с дизайна API. Если в API не предусмотрена какая-то специфическая функциональность — приходится запрашивать близкое разрешение, где эта функциональность есть. Продолжая мой пример с фоновой выгрузкой фотографий и запросом геолокации — OneDrive не нужна геолокация сама по себе. Но использование геолокации в фоне позволяет разбудить спящее приложение при смене этой самой геолокации, чтобы оно могло автоматически выгрузить фотографии.
Фейковые данные — не выход, потому что разработчик знает, что они фейковые и волен обрабатывать их так, как считает нужным — например так же, как и отсутствие данных в результате ошибки.
Мы говорим на разных языках. Значит и к общему придти не сможем. Я не могу понять, почему вы защищаете неоправданные запросы разрешений.
Речь не о том, как волен трактовать разработчик фейковые данные, а есть ли у него право, получать пользовательских данных больше, чем требуется для выполнения запрошенной пользователем, отдельно взятой функции?
Фейк это защитный механизм. Если разработчик, приложит немалые дополнительные усилия что бы детектировать фейк, с помощью которого пользователь защищается от его же излишнего любопытства, значит запрос такого разрешения 100% неоправдан.
У разработчика нет права получать данные в обход официальных API. Это стандартный Review Guideline на обеих платформах (на iOS это проверяется строже, на Android — менее строго). У разработчика есть право использовать официальные API для получения тех данных, которые ему требуются (с точки зрения разработчика, разумеется) и обрабатывать наличие данных, наличие заглушки и отсутствие данных способов, который он считает приемлемым. У вас, как пользователя, есть право не соглашаться с запросами тех или иных данных и не устанавливать/удалять приложения, не работающие без тех или иных данных. Да, официальные API на обеих платформах недостаточно гранулированы, поэтому иногда для какой-то малозначимой, но нужной вещи приходится запрашивать доступ к целому вороху всего остального. Это проблема не разработчика, а системы и ее API.
По поводу фейковых данных — это не усилие разработчика приложения, это усилие API системы. Потому что с точки зрения разработчика наличие геоданных, наличие фейковых геоданных и отсутствие геоданных — это три разные ситуации, которые нужно обработать по-разному (например показать пользователю его положение на карте при наличии геоданных, показать сообщение «я не могу показать ваше положение, потому что вы не дали мне доступ к данным» при наличии фейковых данных и показать сообщение об ошибке при отсутствии данных). Если система не позволяет мне отличить фейковые данные от ошибки получения данных — я, как разработчик, обработаю это соответственно (как ошибку). Если система не позволяет мне отличить фейковые данные от реальных (например выдавая сгенерированные координаты вместо реальных или фейкового Ивана Иванова вместо контактов пользователя) — я, как разработчик, не буду писать под такую систему.
Многое из сказанного не нравится. Что-то даже сильно не нравится. Но возразить по сути нечего. Все где-то так или около. Но большего контроля над поведением Вашей программы на Моем устройстве, все-таки хочется. И фейк-данные неотличимые от реальности, один из способов.
Кстати, по поводу фейк-данных, неотличимых от реальности.
А какое должно быть значение по умолчанию для этих данных? Скажем пользователь купил смартфон и проходит Out-of-box. Что должно быть подставлено в фейк-данные? Текущий дом? Улица? Район города? Город? Область? Страна? Континент? Почему именно это? А если там кто-то живет и ему не нравится, что все смартфоны выбирают его жилище точкой геолокации «по умолчанию»?
P.S. По поводу большего контроля. «Разрешить доступ к геолокации по GPS?» «Разрешить доступ к геолокации по GLONASS?» «Разрешить доступ к геолокации по Beidou?» «Разрешить доступ к геолокации по Galileo?» «Разрешить доступ к геолокации по точкам доступа Wi-Fi?» «Разрешить доступ к геолокации по базовым станциям?» — это я навскидку написал, как будет выглядеть гранулированный запрос по геолокации. А теперь представьте такое же для всех современных разрешений (причем для данных типа фото/видео/файлов — при доступе к каждому отдельному файлу).
Я не знаю. Это детали технической реализации. И заслуживают отдельной беседы. Вариантов много. Например фиксация первого местоположения. Ведь фейком борются не с конкретным местом, а с отслеживанием перемещений. Поэтому ключевое слово «фиксация» а не «место».
А что, по IP уже не модно вычислять? Зачем так глубоко залезать пользователю в кишечник?
Да, верно, про ресолвинг страны через IP я забыл, поскольку надежность довольно низкая. ОК, ещё один пункт.
Перегрузите страницу. Предыдущий коммент отправился недописанным. Извините.
помню как на телефонах ява требовала разрешение при смене папки… это было действительно «очень не удобно»
На java-телефонах это преследовало еще и другую необходимость — убедиться, что конкретная Java-машина поддерживает ту или иную фичу.
Ну я несколько иное предлагаю: вместо координат к примеру отдавать не nil, а заданые пользователем координаты. Например координаты дома, или города. А где именно в этом городе находится пользователь программу волновать не должно. Добавить пункт: а-ля, кто из разрабочиков будет вырубать программу из-за того что пользователь «не двигается» — вылетает с Google Play.
Проблема в том, что заданные пользователем координаты (да и вообще любые валидные координаты) — это вполне реальное место. И мне, как разработчику, не понятно — то ли пользователь запретил мне читать его положение, то ли пользователь и правда находится в точке с координатами (0;0)
Для любого нормального приложения (исключая всякие странные калькуляторы) есть вполне разумное объяснение, зачем приложение требует те или иные разрешения. И приличные разработчики даже указывают эти объяснения в запросе разрешения / описании приложения. Тот факт, что помимо выполнения прямых функций эти разрешения также используются (и злоупотребляются) для таргетинга — другая проблема, связанная с тем, что всем хочется как-то монетизироваться.
Повторюсь, это не должно быть 0;0, это должно быть заданое пользователем любое место. А дальше, Вас как разработчика это волновать не должно: находится там пользователь или нет.
В части программ описания нет, и список их хотелок прямо скажем великоват. Пользователь ставится перед выбором: либо отдать контакты, позицию, все соседские точки Wifi, и прочее, либо не пользоваться
Меня, как разработчика, это должно волновать, и я уже объяснил почему — фейковые данные и отсутствие данных — это не одно и то же. Хотя бы потому, что мне не нужно показывать пользователю из Пензы, указавшему своим местоположением «Москва» плашку «Сообщите своим друзьям, что вы в порядке» после терракта в метро.
Вторая причина: в реальном мире обязательно найдется пользователь, по той или иной причине не давший доступа к своему местоположению. И этот пользователь обязательно пойдет и напишет негативный отзыв на навигационное приложение (которое, внезапно, плохо работает, не зная, где сейчас находится пользователь), которое почему-то неправильно работает.
В первую очередь должны стоять интересы пользователя а не разработчика. И если он пишет «хочу чтобы это программа отвалила от меня и думала что я в Москве, значит он ок насчет этого» Хотите вы показывать ему про терракт (скорее про рекламу идет речь) — или нет это личный выбор каждого.
Не вижу причины переносить предупреждения про терракт в каждую программу, если вы разработчик. Если вы написали снапчат или мессенжер, то пусть он думает что в Москве и точка. Либо надо разрешить программе работать без получения доступа к тем или иным данным.
А когда калькулятор просит контакты, доступ к звонкам, местоположению, а если его не разрешить — отказывает работать, это, извините, перебор.
Ну а вообще вы стараетесь игнорировать мою начальную идею. Если я нахожусь в Москве, я выдам мое положение — город Москва. Может ткну в точку рядом с домом. И пусть оно там зафиксировано для всех программ из списка. Таким образом я попадаю под рекламу (привет гугл). под рекламу (привет разрабочики), но не выдаю своего конкретного положения в москве (привет параноики).
То же самое с контактами. Вместо пустого nil — выдать ( A (+11), B (+22), C (+33) — вот вся книга контаков если ее кто-то хочет слить.
Да не будет оно так работать.
Пример: разработчик пишет приложение, показывающее ближайшие заправки.
Сейчас, если юзер не дал пермишн на геолокацию, разработчик может это понять и выдать сообщение, мол, чувак, чтобы найти заправки рядом с тобой приложению надо знать, где ты находишься.
В случае с фейковыми координатами приложение покажет заправки рядом с этими координатами. После чего разгневанный пользователь пойдет в Аппстор/Гуглплей, поставит приложению одну звезду и покроет разработчика трехэтажным матом, потому что приложение нихрена не работает и показывает какую-то херь, хотя заправка — вот она, рядом стоит.
Ну мы говорим про главный функционал. Пользователь не особо умный, но и за дураков его считать не надо: если ты поставил в разрешениях: камера — черный экран, то глупо возмущаться если снэпчат показывает черный экран.
С другой стороны на кой черт прилоежнию для поиска моих заправок к примеру мои контакты и доступ к почте, и почему оно отказывается работать без них?
>> Ну мы говорим про главный функционал
А что есть главный функционал? Вот, к примеру, я написал калькулятор для решения уравнений. Все хорошо и прекрасно. Но неудобно вводить эти самые уравнения. Я решил сделать фичу: возможность сфоткать уравнение с бумаги. Для этого нужен доступ к камере. Юзер с криком:»Нахрена калькулятору доступ к камере!!!» выставляет мне шедевр Малевича. Фича не работает. Самое неприятное, что в приложении ничего с этим нельзя сделать. Если бы юзер просто запретил доступ к камере, то это можно как-то обработать, к примеру, выдать сообщение, объяснить, почему не работает и что для этого надо. В случае фейковой картинки ничего этого сделать нельзя — фича просто не работает без объяснения причин. Юзер идет в гуглоплей писать матерные отзывы о криворукости разработчиков.
>> но и за дураков его считать не надо: если ты поставил в разрешениях: камера — черный экран, то глупо возмущаться если снэпчат показывает черный экран.
То есть вы хотите заставить юзера помнить, какие кому и когда фейковые настройки он задал?? Вы издеваетесь? Даже в этой статье стоит вой по поводу количества разрешений и благословление яблока, потому как там этих разрешений намного меньше. А вы еще помимо обычных разрешений хотите фейковые добавить. Пользователь, может, и не дурак, но очень не любит напрягать межушный нервный узел вопросами, прямо не относящимися к текущей задаче.
>>С другой стороны на кой черт прилоежнию для поиска моих заправок к примеру мои контакты и доступ к почте
К примеру, чтобы поделиться классной заправкой со своими друзьями. Или наоборот, сообщить о плохойю
>>и почему оно отказывается работать без них?
Если при этом разработчик не озаботился внятным объяснением и приложение тупо не работает, то имеет смысл пойти в гуглоплей, поставить единицу и написать матерный отзыв о криворукости разработчика.
Вы написали калькулятор, потом решили дать фуннцию сфотать уравнение (круто), потом функцию поделиться с друзьями (нахера) — и попросили доступ к контактам и звонкам и смс. И записли все это в обязательные требования к программе — если доступа нету, она просто вываливается и не работает.
В итоге пользователь который хочет посчитать 2+23 — должен давать доступ вашей программе ко всему телефону или переставать ей пользоваться.
Увы встречаются такие программы. Я вот например сбросил все установки после переход на Oreo. Мне кто-то прислал что-то в SnapChat и при запуске он просит доступ к камере и GPS. Если его не дать — выключается. Если я хочу общаться — зачем мне GPS и камера? Пример несколько параноидальный, но показывает принцип работы многих приложений
Ну в тех же яблочных гадлайнах явно прописано, что запрашивать пермишны надо только тогда, когда надо. То есть в вашем примере запрос на доступ к контактам будет только тогда, когда юзер сам нажмет кнопку «поделиться».
>>И записли все это в обязательные требования к программе — если доступа нету, она просто вываливается и не работает.
Это ай-яй-яй и такому приложению надо оставлять соответствующий отзыв. Адекватный разработчик исправит как надо. А если не исправит, то он либо неадекватный, либо пермишны ему явно нужны для других целей. В обоих случаях такой программой лучше не пользоваться.
Но я в любом случае против фейковых данных. Потому что сейчас у разработчика есть все инструменты: он может узнать текущие разрешения, в случае необходимости попросить дополнительные. Если юзер полгода назад запретил доступ к геолокации, а сейчас ВНЕЗАПНО захотел найти ближайшую заправку — приложение может эту ситуацию корректно обработать, объяснить юзеру, что без доступа к геолокации ничего не получится.
В случае фейковых данных это уже проблема юзера помнить кому он там что подсунул полгода назад. С точки зрения приложения все норм: пермишны есть, координаты есть, насколько они фейковые приложение не знает — оно просто выдаст ему заправку по фейковым кординатам в условно в 1000км от его реального места. Естественно юзер ничего помнить не захочет, просто уматерит разработчика, да и все. А разработчик ничего с этим сделать не сможет.
Ну изначально была идея подсовывать Fake там где ты считаешь это нужным. Никто в здравом уме не будет подсовывать Fake данные в прилоежние карты или убер.
Можно отмечать что приложению отдаются заведомо ложные данные по выбору пользвателя. В любом случае это решаемо. Цвет шторки уведомлений поменяйте на красный там.
Опять же недавно: сбросил все разрешения, кто-то написал в Snapchat, щелкаю на уведомление, вываливается: «Вы хотите дать доступ к камере?! — Нет», приложение тут же закрывается. Сообщение не прочитано. Опять щелкаю туда же: Вы хотите дать доступ к камере?! Да. Вы хотите дать доступ к вашему местоположению — Нет.» Снова закрывается.» Ептвоюмать, мне надо прочитать сообщение, камерой встроеной в Snapchat я никогда не пользовался. Я понимаю что приложение хочет знать местоположение и прочий хлам, но чтобы показывать релеватный хлам(новости всякие там) — достаточно знать город, а не дергать GPS телефона каждый раз.
Вот ради таких упертых разрабов очень пригодилось: местоположеие тут, камера — черный экран.
>>Никто в здравом уме не будет подсовывать Fake данные в прилоежние карты или убер.
Вы переоцениваете обычных пользователей. К тому же, оно может сработать, если у вас стоит пара-тройка приложений. А если пара-тройка десятков? А если сотен? Никто не будет помнить, кому фейковые данные отдал, кому реальные. Листать километровые списки с пермишнами тоже никто не будет.
>>Цвет шторки уведомлений поменяйте на красный там.
🙂
Чтобы поменять цвет шторки, мне надо знать, что данные фейковые. Если я буду знать, что данные фейковые, что мне помешает требовать реальные и отказываться работать, пока эти реальные данные мне не дадут?
Я еще раз повторяю: сейчас у разработчика есть все инструменты, чтобы сделать как надо. И надо оставлять отзывы. Адекватный разработчик сделает как надо. Может, человек просто не очень опытный, просто запихал все пермишны в манифест и все. Почитает отзывы, сделает как надо, народ будет его софтом пользоваться. Неадекватные разработчики будут сидеть с единицами в аппсторе и это будет предупреждением для других пользователей.
Ну вы предлагаете мне решать проблемы за гугл или за разработчиков уже =) Шторку красной должен делать андроид, а не приложение. Оно в идеале не должно понимать, реальные данные или фейк, а то начнется как выше написали
Реальный пример я выше написал: чтобы прочитать присланое тестовое сообщение в SnapChat мне надо предоставить доступ к камере и GPS. Если я не даю доступ к камере или GPS — приложение выключается. С одной стороны я понимаю что делиться фоточками это сама идея этой программы, но все равно.
>> Ну вы предлагаете мне решать проблемы за гугл или за разработчиков уже =)
В том-то и дело, что нет. Я лишь призываю вас не мешать разработчикам решать проблемы и не перекладывать эти проблемы на пользователей.
>> Шторку красной должен делать андроид
При текущем изобилии оболочек и тем это малореально. Вон даже качественную темную тему запилить никак не могут, чтобы шторка была темная и уведомления читались.
Про пример я понял. И я согласен с вами, что разработчик — нетрадиционной ориентации. Разработчика надо материть, приложению ставить 1 звезду и не пользоваться им. В конце концов, адекватных разработчиков все равно больше, а незаменимых людей нет. Как и приложений. А, как показывает опыт, неадекватный криворукий разработчик ничего такого супер-уникального, без чего невозможно жить, все равно не сделает.
Как разработчик, я удовлетворяю интересы пользователя, предоставляя ему программу, решающую его задачи. Помимо этого я хочу каким-то способом зарабатывать на приложении (удивительно, но от факта существования бесплатного приложения у меня в холодильнике не появляется еда, а в розетке — электричество). Как разработчик, я могу пойти во фримиум, а могу, раз уж я все равно получаю от пользователя данные, использовать их. Если пользователю это не нравится — он проголосует, удалив мое приложение с устройства и поставив ему одну звезду рейтинга в сторе. Я не очень уверен, как там дела в Play Store, но в iOS в топе нет «калькуляторов», запрашивающих кучу разрешений. Да и в целом — я не видел на iOS приложений, которые отказываются работать без предоставления им тех или иных разрешений. Даже пресловутому Facebook/Whatsapp можно отключить все — и он будет по-прежнему показывать ленту новостей/обмениваться сообщениями. Хотя у iOS тут есть преимущество в виде того, что управление разрешениями появилось чуть позже Android, поэтому можно было увидеть, как это сделано у конкурентов и не повторять очевидных ошибок.
P.S. У меня создается такое ощущение, что вы не против разрешений, как таковых. Вы против того, что компании зарабатывают на ваших данных. Ну так это рынок, тут все должно быть оплачено. Платные сервисы оплачиваются вашими деньгами, бесплатные — вашими данными (и это вполне честно указывается где-то на пятьдесят первом экране ToS)
P.S. Кстати, раз основной сыр-бор тут пока идет вокруг геолокации — на Android же было какое-то приложение, которое подменяет GPS-данные?
Я в обратном порядке отвечу:
Я категорически не против тем чтобы дать доступ к нужным данным для рабты приложения. Я абсолютно за, чтобы приложение рассказало мне зачем ему доступ туда-то и туда-то. Но я категорически против того чтобы приложение отказывалось рабоать без предоставления ему тех или иных прав доступа. И вот чтобы это обойти как раз таки можно предложить «пустышку». Не nil как в Apple и не массив с нулевой длинной, а какие-то данные. В случае с GPS — это будут заданые координаты, в случае с телефоном/SMS — звонки/sms будут уходить в /dev/null.
Ну вы тут не особо стесняясь что доступные данные используете для получения выгоды. Я понммаю что пользователь сам пописался на это на 51 странице соглашения. но все равно. С т.з. производителя устройств — ему выгодно сделать чтобы такие ситуации не проходили, т.к. тут он защищает пользователя(должен по идее). Для пользователя это тоже неплохо (как минимум батарейка в примере с GPS садиться не будет).
Приложение чтобы подменитьт координаты — FakeGPS, требует рута, который не у всех есть.
У вас все хорошо с логикой кроме одного пункта — производитель должен предоставить пользователю устройство, которое работает. И оно работает. Все остальное (сторонние приложения, утечки пользовательских данных) — это уже проблемы пользователя.
А я считаю производитель должен предоставить удобною платформу и дать контроль над личными данными, чтобы пользователь мог ограничить жадные до данных приложения по своему усмотрению. Сейчас все именно так как Вы сказали — утечки данных это проблемы пользователя. В условиях пользования на 51 странице у вас так и написано. Но я же считаю, что неплохо бы Google/Apple дать некоторый контроль и гибкость в распространении этих данных. То что сейчас есть — хорошо, но если это ломает функционал программы — было бы круто если бы сделали как я написал выше — Fake data.
Низкие продажи и провалы краудфандинга проектов смартфонов с уклоном в приватность говорят о том, что те, кому это важно, в состоянии настроить себе телефон. Производитель предоставляет среду и спецификации, по которой в этой среде можно работать. Все остальное — проблема пользователя.
Проблема Android — в том, что там нет процесса App Review, в ходе которого можно проверить, работает ли приложение, если пользователь не разрешил доступ ко всем данным, или нет (а также проверить, а насколько приложению нужны эти привилегии в принципе)
P.S. Кстати, не путайте термины. «Утечка» — это получение данных без согласия на то пользователя. В текущем случае пользователь даёт своё явное разрешение — его об этом спрашивает ОС.
Я говорил, но наверно недостаточно прямо. Система должна учитывать существование в ней всяких индивидуумов, а вы напираете только на приличных.
Фейк-данные как раз и направлены против странных разработчиков, а приличных, они просто не затронут. Если геопозиция нужна для работы в фоне, фейковость даже поможет. Задача выполнена, энергопотребление меньше. Если это основная функциональность, геопозицию просто включат. Если это вторичная функциональность, но разработчик приличный, он корректно обработает отсутствие разрешений. Кто остается? Тот, кто для вторичной функциональности, «капризничает» от запрета.
Хотите монетизироваться, используйте данные от основной функциональности. А не ищите повод расширить доступ, искусственно вставив мелкую фиговинку (снова привет неприличные разработчики).
Вы всегда можете показать разработчику, что вас что-то не устраивает в его приложении, не устанавливая его / удаляя его и выставляя ему однозвездный рейтинг.
P.S. А что, на Android приложения правда падают, если им не выдать тех или иных разрешений, кажущихся пользователю вторичными?
Уже согласился, могу. Но и иной вариант взаимодействия, так как программа работает на Моем устройстве, неприличным тоже не считаю.
Не буду врать про масштаб, программ ставлю немного. Сам сталкивался только один раз. Программа не хотела открывать карточку создания новой записи, при запрещенных контактах, потому что теоретически, что-то могло вставляться из адресной книги. Поступил по вашей рекомендации )), нашел другую.
ну вы же понимает что это «броня против снаярда». без маркетологов ничего продаваться/покупаться не будет. Или это Платные сервисы — но без разрешений. Не пытайтесь нарушить установившийся закон Человеческой природы — лучше измените его.
Убивший дракона — сам станет им.
Постепенно перехожу либо на платные сервисы либо поднятые на своём сервере. Вот с электронной почтой заморачиваться не стал развёртыванием у себя — это слишком важный функционал и куча тонкостей, которые нужно постоянно отслеживать. Поэтому купил за 50 баксов в год подписку на платный почтовый сервис. Никакой рекламы, uBlock на сайте сервиса молчит как рыба об лёд, тщательно продуманный до мелочей интерфейс, куча удобных доп. возможностей. Приватность? Общался на эту тему с командой разработчиков перед тем как оформить подписку. В общем и целом, результат диалога меня удовлетворил, в частности тем, что разработчики явно «болеют» за свой сервис.
А вот облачное хранилище развернул на своём сервере. Как и CardDAV-сервис. Естественно, распределённый бэкап присутствует, как и всевозможные доступные методы защиты.
Гугл-сервисы выпилены на смартфоне под ноль, точней их изначально не было в LineageOS.
Мессенджерами, которые для авторизации используют номер телефона и непременно хотят доступ к моей телефонной книге, я не пользуюсь. Развёрнут Rocket.Chat на своём сервере, все мне нужные контакты там присутствуют. Держать пачку мессенджеров, потому что Вася пользуется только вибером, а Коля исключительно вацапом, а пара маргиналов юзает телеграм и больше ни о чём знать не хотят — это не ко мне, пусть другие прыгают под эту дудку.
У меня нет «синдрома неуловимого Джо», но постепенно я пришёл к убеждению, что ничего бесплатного не бывает. Хочешь получить контролируемые сервисы — нужно платить, деньгами или временем, затраченным на настройку.
pop3/smtp/imap и у uBlock-а просто не будет повода что-то сказать )))
А вообще — одобрям’с. Надеюсь и у меня когда-нибудь до этого дойдет.
Зачот.
Только для данных надо замутить еще что-нибудь децентрализованное, p2p-шное и шифрованное, навроде Syncthing. Будет совсем хорошо.
Да ладно, следят значит, ну я разрешения блочу чтобы энергию не жрали
Недавно залез в гугл картыпосмотреть пробки и обнаружил что мое местонахождение показывается в виде веера (а не как точка). Пошел в коридор — веер повернулся. Короче говоря веер направлен туда куда смотрит задняя спинка телефона. Вот пример современных технологий.
Удалил все приложения соц сетей, предварительно прошерстив раздел безопасность.
Пользуюсь вебверсиями.
Инста-акк удалил пару лет назад, ввиду фимозности текущего контента.
И тут стоит вспомнить вопли людей про «возможности» трубок на Андроиде.
Андроид — это дыра в плане безопасности — любое приложение может запускаться когда вздумает, а предоставляемые разрешения не делятся на те, что предоставляются в фоне и при «онтоп» работе приложения. А все почему? Потому, что Гугл главный сборщик информации. А так как она сама трубки не выпускает практически, то её приложения работают «наравне» с другими… ну почти. Не может же она себе кислород перекрыть.
В Айос тоже не все гладко, есть откровенно слабые места, но в плане безопасности там все продуманно на порядок лучше чем в Андроиде.