Очистка URI файлов Intent

У меня есть приложение для чата Android, которое принимает большое количество возможных способов обмена. Я пытаюсь усилить логику синтаксического анализа файловых URI в моем приложении. Например, URI, содержащие имя пакета моего приложения, фильтруются, поскольку в противном случае внешнее приложение может попытаться обмануть пользователя, чтобы он поделился всей базой сообщений с кем-то еще. Я также хочу заблокировать попытки чтения /proc/self и тому подобное. Я ищу список каталогов, которые должны быть заблокированы, или, что еще лучше, библиотека, которая выполняет эту очистку для меня. Другой вариант - использовать белый список внешних кэшей и каталогов, который я могу получить из системы Android. Кто-нибудь может дать мне совет, какой вариант будет лучше? Или кто-нибудь может дать мне список подобных каталогов для proc что должно быть в черном списке по крайней мере?

1 ответ

Решение

Просто ради закрытия, я выложу решение, с которым я пошел. Я блокирую все что угодно /proc/ и имя пакета моего приложения, вот так:

val path = uri.getPath
if (path.contains(context.getPackageName) || path.startsWith("/proc")) {
  None
} else {
  Some(u)
}

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

Другие вопросы по тегам