Эта информация предназначена для разработчиков, чьи приложения уязвимы перед внедрением SQL-кода.
Что происходит
Одно или несколько ваших приложений уязвимы перед внедрением SQL-кода. Это необходимо исправить до наступления даты, которая указана в уведомлении в Play Console. В противном случае приложения, содержащие неисправленные уязвимости, могут быть удалены из Google Play.
Что нужно сделать
- Чтобы узнать, какие приложения уязвимы и в какой срок нужно устранить проблему, войдите в Play Console и откройте раздел "Оповещения".
- Устраните уязвимость, внеся изменения в затронутые ей приложения.
- Опубликуйте обновленные версии приложений.
После этого мы проведем повторную проверку, которая может занять несколько часов. Если мы убедимся, что уязвимость устранена, то опубликуем приложение и дополнительных действий с вашей стороны не потребуется. В противном случае новая версия не будет опубликована, а вы получите уведомление по электронной почте.
Сведения об уязвимости
Использование методов query
, update
и delete
в экспортируемых классах ContentProvider
может привести к внедрению SQL-кода, если в необработанные инструкции SQL включены внешние ненадежные данные. В результате вредоносное ПО может получить доступ к личной информации или повредить базу данных. Эту проблему можно решить способами, приведенными ниже.
Если затронутый класс ContentProvider
не должен быть доступен другим приложениям:
- Измените тег
<provider>
затронутого классаContentProvider
в манифесте, установив значениеandroid:exported="false"
. После этого другие приложения не смогут отправлять намерения затронутому классуContentProvider
. -
Задайте для атрибута
android:permission
тегpermission
со значениемandroid:protectionLevel="signature"
, чтобы приложения других разработчиков не могли отправлять намерения затронутому классуContentProvider
.
Если затронутый класс ContentProvider
должен быть доступен другим приложениям:
- Предотвратить внедрение SQL-кода в класс
SQLiteDatabase.query
можно, воспользовавшись режимом strict и картой проекций. Этот режим защитит класс от вредоносных предложений выбора, а карта проекций – от вредоносных предложений проекции. Используйте оба способа, чтобы обеспечить безопасность запросов. - Чтобы предотвратить внедрение SQL-кода в классы
SQLiteDatabase.update
иSQLiteDatabase.delete
, используйте предложение выбора c заменяемым параметром"?"
и отдельный массив аргументов выбора. Предложение выбора не должно включать ненадежные внешние данные.
Как получить помощь
Если у вас есть вопросы, задайте их, используя тег android-security. Чтобы получить более подробные разъяснения, свяжитесь с командой поддержки для разработчиков.