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

Рекомендации по безопасной разработке приложений

Общие рекомендации

Небезопасное использование криптографических алгоритмов

Рекомендации для Android

Небезопасное хранение ключевой информации

Доступное на запись хранилище ключей
Доступное на запись хранилище ключей со слабым паролем
Доступное на чтение файловое хранилище ключей
Доступное на чтение хранилище ключей со слабым паролем, содержащее закрытые ключи
Доступное на чтение хранилище ключей со слабым паролем, содержащее открытые ключи
Доступное на чтение хранилище ключей с приватными ключами, защищёнными слабым паролем
Использование файлового хранилища ключей
Хранилище ключей со слабым паролем, содержащее закрытые ключи
Хранилище ключей со слабым паролем, содержащее открытые ключи
Хранилище ключей с приватными ключами, защищёнными слабым паролем

Передача sensitive-информации в Activity

Небезопасная передача sensitive-информации в Activity
Небезопасная передача sensitive-информации во внешнюю Activity
Передача sensitive-информации во внутреннюю Activity

Передача sensitive-информации в Service

Небезопасная передача sensitive-информации в Service
Небезопасная передача sensitive-информации во внешний Service
Небезопасная передача sensitive-информации во внутренний Service

Передача sensitive-информации по сети

Включение sensitive-информации в параметры GET-запроса
Включение чувствительной информации в HTTPS запрос
Передача sensitive информации в HTTP-запросе
Получение sensitive-информации в HTTP-ответе
Получение чувствительной информации в HTTPS-ответе

Хранение sensitive-информации

Хранение sensitive-информации в памяти
Хранение sensitive-информации в общедоступном файле вне директории приложения
Хранение sensitive-информации в общедоступном файле внутри директории приложения
Хранение sensitive-информации в приватном файле вне директории приложения
Хранение sensitive-информации в приватном файле внутри директории приложения
Хранение sensitive-информации в общедоступной защищённой базе данных
Хранение sensitive-информации в защищённой базе данных
Хранение чувствительной информации в незащищённой базе данных
Хранение sensitive-информации в общедоступной незащищённой базе данных
Хранение sensitive-информации в исходном коде приложения
Хранение или использование ранее найденной sensitive-информации
Хранение sensitive-информации в кэше клавиатуры

Хранение ключей/сертификатов

Хранение приватного ключа/сертификата, не защищенного паролем в директории/ресурсах приложения
Хранение публичного ключа/сертификата в директории/ресурсах приложения
Хранение приватного ключа/сертификата, защищенного паролем, в директории/ресурсах приложения
Хранение сертификата/ключа в директории/ресурсах приложения

Прочие

Вывод sensitive-информации в системный лог
Небезопасный алгоритм подписи
Недостаточная длина ключа подписи
Передача sensitive-информации в BroadcastReceiver
Передача sensitive-информации в Private BroadcastReceiver
Передача sensitive-информации в параметрах SQL-запроса
Возможность создания резервной копии приложения
Приложение не обфусцировано
Слабый пароль шифрования базы данных
Перехват пароля шифрования базы данных
Приложение разрешает сетевые соединения по протоколу HTTP
Небезопасная конфигурация сетевого взаимодействия
Потенциальное выполнение произвольного кода в контексте приложения
Хранение значений Cookies в стандартной базе WebView
Небезопасные настройки в AndroidManifest.xml
Небезопасные настройки в AndroidManifest.xml. Флаг android:hasFragileUserData
Небезопасные настройки в AndroidManifest.xml. Флаг android:requestLegacyExternalStorage
Отсутствует или некорректно реализован SSL-pinning
Возможность опосредованного запуска приватных Activity
Возможность подмены URL
Возможность открытия произвольного URL в WebView
Возможность получения доступа к произвольному файлу
Возможность получения доступа к произвольному ContentProvider
Возможность доступа к произвольному файлу через ContentProvider
Отсутствие проверки на root-доступ
Отсутствие проверки на запуск на эмуляторе
Отсутствие проверки целостности приложения
Недостаточная проверка на запуск на эмуляторе
Недостаточная проверка на root-доступ
Перезапись файлов при использовании публичных архивов

Рекомендации для iOS

Хранение ключей/сертификатов

Хранение сертификата/ключа в директории/ресурсах приложения
Хранение приватного ключа/сертификата защищенного паролем в директории/ресурсах приложения
Хранение публичного ключа/сертификата в директории/ресурсах приложения
Хранение приватного ключа/сертификата не защищенного паролем в директории/ресурсах приложения

Небезопасное хранение ключевой информации

Доступное на запись хранилище ключей
Доступное на запись хранилище ключей со слабым паролем
Доступное на чтение файловое хранилище ключей
Доступное на чтение хранилище ключей со слабым паролем, содержащее закрытые ключи
Доступное на чтение хранилище ключей со слабым паролем, содержащее открытые ключи
Доступное на чтение хранилище ключей с приватными ключами, защищёнными слабым паролем
Использование файлового хранилища ключей
Хранилище ключей со слабым паролем, содержащее закрытые ключи
Хранилище ключей со слабым паролем, содержащее открытые ключи
Хранилище ключей с приватными ключами, защищёнными слабым паролем

Прочие

Включенное кэширование сетевых запросов
Вывод sensitive-информации в системный лог
Небезопасная конфигурация App Transport Security
Приложение не использует функции защиты от переполнений
Наличие скриптов сборки в собранном пакете приложения
Наличие файла со списком сторонних зависимостей в собранном пакете приложения
Хранение sensitive-информации в кэше клавиатуры
Хранение sensitive-информации в NSUserDefaults
Хранение sensitive-информации в приватном файле
Хранение sensitive-информации в исходном коде приложения
Хранение чувствительной информации в Binary Cookies
Хранение или использование ранее найденной чувствительной информации

К началу