Поставщики контента Android - можно ли ограничить провайдера набором приложений, не написанных мной? - PullRequest
2 голосов
/ 03 февраля 2012

Когда речь заходит о защите поставщика контента, мне было интересно, существует ли какой-то шаг между нормальным уровнем безопасности и уровнем сигнатур.

У меня есть приложение, использующее провайдера, которое я хотел бы открыть для определенного набора других приложений.Однако эти другие приложения не будут написаны мной, поэтому использование разрешения на уровне подписи будет недостаточным, так как подписи будут другими.

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

Можно ли разрешить другим приложениям доступ к поставщику только во время выполнения?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 03 февраля 2012

Я не знаю точно, но я думаю, что вы можете использовать функцию Binder.getCallingUid() в вашем ContentProvider.Используя этот метод, вы можете проверить Uids вызывающих приложений и ограничить использование вашего CP на основе UID приложения.

Обновление: Во время установки ОС Android назначает UID для установки приложения.Таким образом, UID могут быть разными на разных устройствах.Но имя пакета приложения одинаково для всех устройств.Но если я знаю, какой пакет может читать ваши данные, я могу просто подделать его.

0 голосов
/ 03 февраля 2012

Одним из решений, которое мне не по плечу, может быть включение вашего контент-провайдера в Сервис. Таким образом, запросы поступают как намерения или через связующее. Вы можете ограничить намерения, проверив название пакета, что, на мой взгляд, будет сложнее, если приложение появилось на рынке приложений.

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

...