Экспортированные поставщики контента могут предоставлять доступ к потенциально конфиденциальным данным
Я использую ContentProvider
в своем приложении Android для совместного использования базы данных между приложением. Для совместного использования базы данных мне нужно добавить доступ к провайдеру в AndroidManifest.xml
следующим образом:
<provider
android:name="Contentprovider"
android:authorities="umb.con.apps.vid" />
Я добавил и реализовал успешно, но предупреждающее сообщение, отображаемое в теге <provider/>
, как это: "Экспортированные поставщики контента могут предоставлять доступ к потенциально конфиденциальным данным". Будет ли это причиной любой проблемы безопасности в будущем?
Ответы
Ответ 1
Если вы просто хотите, чтобы контент-провайдер был доступен изнутри внутри приложения, просто добавьте
android:exported="false"
в node в манифесте.
Из doc:
false: поставщик недоступен для других приложений. Установите android: exported = "false", чтобы ограничить доступ к поставщику вашим приложениям. Доступ к нему будут иметь только те приложения, которые имеют тот же идентификатор пользователя (UID), что и поставщик.
Если, с другой стороны, вы действительно хотите разоблачить свои данные в других приложениях , но, у вас также есть конфиденциальные данные в вашем хранилище данных, помните, что у вас может быть несколько поставщиков контента и, следовательно, выставлять только "общедоступную".
Ответ 2
Также, если вы уверены, что хотите разрешить внешний доступ к вашему провайдеру контента и отключите предупреждение, добавьте tools:ignore="ExportedContentProvider"
например.
<provider
tools:ignore="ExportedContentProvider"
android:exported="true"
android:name="Contentprovider"
android:authorities="umb.con.apps.vid" />