Безопасно ли предоставлять общий доступ ко всему пути с FileProvider?

#android #fileprovider

#Android #файлообменник

Вопрос:

Я работаю над библиотекой, в которой я реализую FileProvider из службы поддержки Android и хочу упростить предоставление разработчику общего доступа к файлам с любого из external-path , external-cache-path cache-path . Если я сам предоставляю пути, вопрос в том, создаю ли я какие-либо проблемы с безопасностью, если я объявляю общий доступ к корню каждого из этих путей следующим образом:

 <?xml version="1.0" encoding="UTF-8" ?>
<paths>
  <external-path name="external_files" path="." />
  <cache-path name="internal_cache" path="." />
  <external-cache-path name="external_cache" path="." />
</paths>
  

Мне все еще нужно позвонить getUriForFile(..) , чтобы получить правильный URI? Возможно ли, чтобы кто-то угадал имя файла по этому пути в uri исходного содержимого, а затем получил к нему доступ, или getUriForFile делает что-то особенное для предоставления доступа к этому конкретному файлу?

Ответ №1:

getUriForFile() возвращает защищенный Uri только для доступа к этому одному файлу. Файлообменник предоставляет доступ к одному файлу для каждого Uri. То, что вы предложили, — это безопасный способ разрешить приложениям доступ к вашим файлам.

Комментарии:

1. У вас есть какая-либо документация в поддержку этого? Я не сомневаюсь в вас, но мне трудно найти хороший источник, чтобы доказать это… Спасибо!

2. getUriForFile() Это ссылка на документацию для этого. Это также является частью документации FileProvider. Прочитайте «Генерация URI содержимого для файла» и «Предоставление временных разрешений URI», они объясняют это действительно хорошо. Я также тщательно протестировал это в своих приложениях. — developer.android.com/reference/android/support/v4/content /…