Logo ru.androidermagazine.com
Logo ru.androidermagazine.com

Разрешения приложений для Android - как Google делает это правильно ...

Оглавление:

Anonim

В последнее время появилось много новостей о том, что в Apple или в безопасности, или в суждениях - и в том, и в другом случае - и то и другое - в Apple, приложения iOS могут заимствовать ваши контактные данные и отправлять их неизвестным частям без вашего согласия. Apple обратилась к этой проблеме с членами Конгресса США и примет меры по усилению контроля в будущем обновлении iOS. Это хорошая новость, и мы рады, что это происходит.

Но как насчет Android? Во время всего этого сосредоточения на приложениях, выполняющих действия без явного разрешения пользователя, вы видите людей, обращающихся к модели разрешений Android. Мы собираемся сломать все это для вас. Это не идеально, но работает довольно хорошо - и это, безусловно, лучше, чем вообще отсутствие системы разрешений.

Давайте проведем вас через разрешения на Android, и как вы должны быть уверены, что вы делаете часть.

По своему дизайну ни одно из приложений Android не имеет разрешения на выполнение каких-либо операций, которые «отрицательно повлияют на другие приложения, операционную систему или пользователя». Чтобы приложение имело доступ к таким вещам, как личные контактные данные, данные другого приложения, доступ к сети или даже что-то столь же обыденное, как запись своих собственных данных в хранилище устройства, приложение должно объявить, что у него будут разрешения для этого, а затем Вы должны принять это разрешение, прежде чем сможете установить приложение. Когда вы устанавливаете приложение, вы получаете список разрешений, которые приложение объявляет.

И обратите внимание, что мы говорим, что приложения «объявляют» разрешения, а не обязательно «запрашивают» их. Мы предполагаем, что семантика, но нет коробки с надписью «Привет, Джерри! Я приложение, и я бы хотел, чтобы вы посмотрели на вашу контактную информацию. Вместо этого, приложения для Android более прямолинейны и говорят: «Эй, Джерри. Я приложение. Вот список того, что я могу сделать, просто я знаю. Возьми или оставь».

Приложения Android объявляют, к каким разрешениям они имеют доступ, и, следовательно, к каким песочницам они могут играть. И вы можете либо принять их и установить приложение, либо нет. Есть смысл?

Разрешения - аванс и личные в Android Market

Вот как это выглядит, если вы установите, скажем, Path. Вы получаете список макросов разрешений, которые объявляет Path. Нажмите один, и это объясняет это разрешение более подробно.

Вот как это выглядит, если вы устанавливаете какое-либо приложение из Android Market. Вам нужно будет прокрутить список, чтобы увидеть их все. Небольшой путь вниз - тот, который получил путь (и другие) во всех видах проблем на iOS. В форме Android вы можете ясно видеть, что Path декларирует разрешение на «Ваши личные данные - читать контактные данные». Нажмите на это разрешение, и вы получите более подробную информацию:

«Позволяет приложению считывать все контактные данные (адреса), хранящиеся на вашем телефоне. Вредоносные программы могут использовать это для отправки ваших данных другим людям».

Таким образом, Path сказал вам, что у него есть доступ к вашим контактным данным. Он не обязательно говорит вам, что он будет с этим делать (если бы мы не только подняли его, вы бы действительно хотели знать?), Но он действительно говорит, что может его прочитать.

Приложения вне Android Market

Но что, если вы загрузите приложение? Или использовать Amazon Appstore? Приложения по-прежнему должны объявлять, какие разрешения они используют, и вы видите этот список разрешений при установке приложения. (Помните, что Amazon Appstore загружает приложения, поэтому то, что вы видите, точно такое же, как если бы вы установили приложение по электронной почте или загрузили.)

Вот как будет выглядеть боковая загрузка Gmail. Единственная реальная разница между боковой загрузкой и установкой из Android Market, поскольку разрешения выполняются, заключается в том, что при боковой загрузке вы не получите более подробное описание разрешений.

Почему все это? Приложения Android «песочницы» - они играют в своем собственном пространстве и имеют свои собственные файлы данных в этой песочнице. Они могут делиться игрой в чужой песочнице только после явного запроса на разрешение, и это делается через экраны, которые вы видите выше. Когда вы принимаете эти разрешения и устанавливаете приложение, вы даете этому приложению разрешение играть в песочницах, в которых оно заявило, что оно хочет играть.

На стороне разработчика … и как потребители должны делать свое дело

За кулисами разработчики приложений декларируют эти разрешения в файле AndroidManifest.xml, который является обязательной частью исходного кода для приложения Android. Эти объявления являются статическими, и каждое из них представляется пользователю, как мы видели выше. У Android нет способа динамического предоставления разрешений во время выполнения, потому что, по словам разработчиков ОС Android, «это усложняет взаимодействие с пользователем в ущерб безопасности». Заставить приложение сообщать вам, что оно хочет сделать, заранее и никогда не сможет измениться - это предельная модель безопасности.

Обратная сторона? Пользователям также легче всего игнорировать.

Мы знаем все о том, что случилось с Path на iOS. Как и многие другие приложения для iOS, он использовал контакт без разрешения. Не для гнусных целей, но, тем не менее, без предварительного разрешения и без дальнейших запросов. Path для Android отправляет все виды данных на свои серверы, как это было на iOS. Но, как мы показали в этом посте, в Android, Path должен сначала объявить разрешение. Или, точнее, он объявляет разрешение, и вы либо принимаете, либо отклоняете его.

Проблема в том, что когда вы устанавливаете приложение, скорее всего, вы собираетесь просто пройти мимо раздела с разрешениями. Вы действительно не должны, но мы все делаем это. Тот факт, что разрешения не написаны простым языком, является частью проблемы. Но даже если бы они были, большинство из нас все равно бы прорвались мимо. Это просто так на каждой платформе. С другой стороны, есть те, кто волнуется из-за разрешений, потому что не понимает их. Опять же, более удобный язык поможет здесь.

Одна из альтернатив этому - приложение запрашивает разрешения во время выполнения, когда оно хочет сделать что-то, что оно не может делать в обычном режиме. Мы уже читали, что команда Android считает, что это неудобно и небезопасно, поэтому вряд ли это произойдет.

Другая альтернатива - разрешить выбранные разрешения, так же, как RIM делает с BlackBerry. В итоге вы получите приложения, которые работают только наполовину, потому что вы отказали в разрешениях, как и BlackBerry. Там нет реального надежного метода, кроме чтения всего этого, когда вы устанавливаете это приложение и пытаетесь понять, что он просит сделать и почему он спрашивает его.

Вот куда мы все пришли. Некоторые из нас понимают права доступа к приложениям больше, чем другие, и когда приложение делает что-то, чего не должно делать, вы слышите крик. Прочитайте разрешения. Читайте комментарии Маркета. Читайте Android Central. Когда что-то пойдет не так, вы услышите об этом.

И последнее …

Особое примечание должно быть здесь о уязвимостях безопасности. Каждая компьютерная программа - и это означает, что каждая мобильная операционная система - переполнена ими. Когда обнаруживается уязвимость, позволяющая приложению обойти модель безопасности, Google быстро исправит ее. Это происходит, и это всегда будет происходить. Как быстро вы получите это обновление, зависит от людей, которые делают ваш телефон. Они заслуживают похвалы, когда делают это правильно, и презрения, когда слишком долго и неправильно. Это не то, что собирается исчезнуть в ближайшее время, и мы прямо здесь с вами, чтобы вызвать OEM, который не делает вещи настолько безопасными и надежными, как они должны быть.

Если вы хотите еще глубже погрузиться в разрешения Android, посетите страницу разработчиков Google на них.