5 August 2010

Как обращаться с данными пользователей на платформе Android

Lumber room
Translation
Original author: Nick Kralevich
С ростом использования мобильных приложений люди обращают все больше внимания на то, как эти приложение используют их данные. Несмотря на то, что платформа Android использует различные разрешения разработанные для защиты пользователей, разработчики приложений ответственны за то, как они используют данные пользователей. Немаловажно, чтобы разработчики понимали, какой код они подключают, и хорошенько обдумывали запрашиваемые разрешения, так как в случае неправильного использования можно потерять доверие пользователей.
Построение здравой и доверительной экосистемы является приоритетом каждого разработчика на платформе Android.
Давайте рассмотрим несколько пунктов для написания приложения, которому будут доверять:
1. Используйте соглашение о конфиденциальности (privacy police)
2. Минимизируйте число запрашиваемых разрешений
3. Предоставляйте своим пользователям выбор при сборе информации
4. Не собирайте ненужную информацию
5. Не отправляйте никакой пользовательской информации с устройства
6.… однако, если это действительно необходимо, используйте шифрование и минимизируйте количество передаваемой информации
7. Не используйте код который вы не понимаете
8. Не ведите логов устройств или информации по конкретным пользователям

Используйте соглашение о конфиденциальности (privacy police)
Приложение пользующееся доверием открыто в том, какие данные оно собирает и почему. Пользователи, в общем случае, согласны делиться информацией с такими приложениями, если они получают какую-то выгоду от этого. Простое и ясное соглашение о конфиденциальности, с указанием какие данные собираются и как они используются, в конечном счете приведет к установлению доверия к приложению

image

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

image

Предоставляйте своим пользователям выбор при сборе информации
Это называется парадоксом конфиденциальности [PDF, 890K]. Пользователи часто с удовольствием делятся информацией, но они хотят контролировать этот процесс. Доверяемое приложение предоставляет пользователям контроль над их данными. Например, Android Browser обладает настройками конфиденциальности, которые позволяют пользователям определять, какой информацией они бы хотел делиться.

image

Не собирайте ненужную информацию
Доверяемое приложение ограничивает категории информации которые оно собирает. Коллекционирование ненужной информации, особенно если вы ее никогда не используете, возбуждает подозрения. Когда сомневаетесь, не собирайте ее.

Не отправляйте никакой пользовательской информации с устройства
Если вам нужна пользовательская информация, постарайтесь убедиться, что она остается в пределах устройства. Пользователи будут чувствовать себя в безопасности, зная о том, что их частная информация не покинет пределов телефона. Отсылка данных с телефона, даже если она делается на благо пользователя, приводит к возникновению подозрений.

… однако, если это действительно необходимо, используйте шифрование и минимизируйте количество передаваемой информации
Иногда доступ к пользовательским данным просто необходим. В этом случае, приложения должны быть уверены что это безопасно. Соглашение о конфиденциальности позволит пользователям избежать ненужных сюрпризов; в некоторых случаях, можно посоветовать напрямую спрашивать пользователей перед передачей данных с устройства.
Прежде всего, минимизируйте ту информацию, которую вы собираете. Действительно ли вам нужен полный номер телефона, или территориального префикса будет достаточно? Можете ли вы использовать одностороннее хэширование информации, прежде чем она покинет устройство, для того, чтобы защитить пользовательские данные?

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


Во-вторых, шифрование критично для безопасной обработки данных. Телефоны часто используются в непроверенных сетях, где злоумышленники могут перхватить конфиденциальную передачу. Шифрование передачи данных критически важно для защиты пользовательской информации.
Последнее, когда общаетесь с сервером по HTTP, лучше не передовать пользовательскую информации в URL, которые используются при HTTP запросе GET. Лучше использовать POST для передачи их в теле сообщения. Использование POST не гарантирует что ваша информация не будет перехвачена, однако размещение ее в URL увеличивает подобную вероятность. К тому же, по умолчанию, большинство веб-серверов заносят в логи все полученные URL.

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

Не ведите логов устройств или информации по конкретным пользователям
Разработчики приложений должны быть аккуратны с логами создаваемыми в устройствах. Android легко позволяет писать в телефонный лог, и каждый, кто видел результат выполнения «logcat», знает, что он заполнен важной, но во многом случайной отладочной информацией из множества приложений. В Android логи являются общими ресурсами, и доступны для приложений с READ_LOGS разрешением (с позволения пользователя, конечно!). Даже если информация в логе временная и уничтожается при перезагрузке, неуместное логгирование информации может привести к ее утечке в другие приложения
Tags:androidандроидgoogleprivacyконфиденциальность
Hubs: Lumber room
+7
363 10
Comments 3
Ads
Top of the last 24 hours