6. Сложные проблемы
В Android из-за спецификаций операционной системы Android или функций, предоставляемых операционной системой Android, трудно обеспечить безопасность реализации приложения. Эти функции могут быть использованы в злонамеренных целях третьими лицами или случайно использованы пользователями, что всегда создаёт риск возникновения проблем с безопасностью, таких как утечка информации. В этой главе мы рассмотрим планы по снижению рисков, связанных с этими функциями, и выделим несколько важных тем для обсуждения.
Копирование и вставка — это функции, которые пользователи часто используют непреднамеренно. Например, многие пользователи используют эти функции для хранения любопытной или важной информации, записывают содержимое электронной почты или веб-страницы в блокнот, или копируют и вставляют пароли из блокнота, чтобы не забыть их заранее. Хотя эти действия кажутся случайными, на самом деле существует скрытая угроза кражи обрабатываемой пользователем информации.
Этот риск связан с механизмом копирования и вставки в операционной системе Android. Информация, скопированная пользователем или приложением, временно хранится в буферной области, называемой буфером обмена. Когда пользователь или приложение вставляет информацию из буфера обмена, она распространяется среди других приложений. Поэтому функция буфера обмена представляет риск утечки информации. Это связано с тем, что буфер обмена является единственным объектом в системе, и любое приложение может использовать ClipboardManager
для получения информации, хранящейся в буфере обмена в любое время. Это означает, что вся информация, которую пользователь копирует или вырезает, будет доступна вредоносным приложениям.
Поэтому, учитывая спецификации операционной системы Android, разработчики приложений должны принять меры для снижения вероятности утечки информации.
Грубо говоря, есть два подхода к снижению риска утечки информации через буфер обмена:
Давайте сначала обсудим подход (1). Предположим, что пользователь копирует строку из другого приложения, такого как блокнот, веб-браузер или почтовое приложение, а затем вставляет её в EditText
вашего приложения. На практике в этом случае практически нет способа предотвратить утечку чувствительной информации из-за копирования и вставки. Поскольку в Android нет функции контроля над операциями копирования третьих сторон. Таким образом, помимо объяснения пользователю риска утечки чувствительной информации при копировании и вставке, нет другого способа, кроме как позволить пользователю самостоятельно уменьшить количество операций.
Следующий подход — (2), когда пользователь копирует чувствительную информацию, отображаемую в приложении. Эффективный способ предотвращения утечки информации в этом случае — запретить копирование и вырезание из представлений (таких как TextView
, EditText
и т. д.). Если в представлениях, используемых для ввода/вывода чувствительной информации (например, личной информации), отключены функции копирования/вставки, информация никогда не будет передана через буфер обмена в вашем приложении.
Существует несколько способов запретить копирование/вставку. Этот раздел описывает простой и эффективный метод: один из способов — отключить длительное нажатие на представление, другой способ — удалить пункты «Копировать» и «Вырезать» из меню выбора строки.
Необходимость принятия мер можно определить на основе процесса, показанного на рисунке 6.1-1. На рисунке 6.1–1 «Тип ввода установлен как атрибут пароля» означает, что тип ввода во время работы приложения должен быть одним из следующих трёх типов. В этом случае, поскольку копирование и вставка по умолчанию запрещены, меры не требуются.
InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD
InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_WEB_PASSWORD
InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_VARIATION_PASSWORD
Далее в разделе подробно описывается каждый пример кода.
До Android 3.0 (API Level 11) нельзя было использовать метод TextView.setCustomSelectionActionMODECallback()
. В этом случае самый простой способ запретить копирование и вставку — отключить долгое нажатие на представлении. Отключение долгого нажатия на представлении можно настроить в файле layout.xml
.
Ниже приведён пример кода для удаления пунктов «Копировать» и «Вырезать» из меню выбора строк в EditText
.
Основные моменты:
ClipboardListeningActivity.java
пакет org.jssec.android.clipboard;
импорт android.app.Activity;
импорт android.content.ComponentName;
импорт android.content.Intent;
импорт android.os.Bundle;
импорт android.util.Log;
импорт android.view.View;
общественный класс ClipboardListeningActivity расширяет Activity {
частный статический окончательный String TAG = "ClipboardListeningActivity";
переопределить
публичный void onCreate(Bundle savedInstanceState) {
супер.onCreate(savedInstanceState);
setContentView(R.layout.activity_clipboard_listening);
}
публичное void onClickStartService(View view) {
если (view.getId() != R.id.start_service_button) {
Log.w(TAG, "Идентификатор View неверен.");
} ещё {
ComponentName cn = startService(
новое намерение(ClipboardListeningActivity.this, ClipboardListeningService.class));
если (cn == null) {
Log.e(TAG, "Не удалось запустить сервис.");
}
}
}
публичное void onClickStopService(View view) {
если (view.getId() != R.id.stop_service_button) {
Log.w(TAG, "Идентификатор View неверен.");
} ещё {
stopService(новое намерение(ClipboardListeningActivity.this, ClipboardListeningService.class));
}
}
}
До сих пор мы представили метод получения данных, хранящихся на буфере обмена. Также можно использовать метод ClipboardManager.setPrimaryClip()
для хранения новых данных в буфере обмена.
Обратите внимание, что метод setPrimaryClip()
заменит информацию, хранящуюся в буфере обмена, поэтому информация, скопированная или вырезанная пользователем, может быть потеряна. При предоставлении пользовательских функций копирования и вырезания с использованием этих методов необходимо тщательно продумать и реализовать их, чтобы предотвратить случайное изменение содержимого буфера обмена, и уведомить пользователя об изменении через диалоговое окно.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )