Filter provider что это
Защищаемся от трекеров на мобильных платформах
Отслеживание в интернете
Многие пользователи сталкиваются с отслеживанием в интернете повседневно. Одним из самых явных и крупных следствий является таргетированная реклама. Любой, кто хоть раз имел дело с такими гигантами как, например, Google AdWords, знает насколько обширны настройки целевой аудитории, доступные рекламодателю.
Особенные опасения вызывает мобильный таргетинг, который к обыкновенным сведениям прикрепляет геолокацию и время пользователя. Вопрос о защите приватности в интернете на мобильных устройствах возникает у многих пользователей.
Как происходит отслеживание пользователей
Взаимодействие с трекер-сервисом обычно происходит отдельно от подгрузки контента приложения или веб-страницы. В зависимости от контекста идентификации, собирается отпечаток устройства на основе доступных параметров: серийные номера компонентов, особенности конфигурации, результаты бенчмарков и прочее. После идентификации на удаленный сервер посылается запрос, содержащий отпечаток и полезную информацию о пользователе.
Есть только один способ избежать идентификацию в целях таргетированной рекламы — перехватить обращение к стороннему сервису.
Идентификация трекеров
Для идентификации трекера можно использовать существующие списки доменов (disconnectme). При отправке пакетов с устройства проверять адрес назначения, и блокировать пакеты если они должны были попасть на трекер.
Есть сложные решения (Pi-hole и другие), но нам преимущественно интересны Android и iOS.
Фильтрация трафика на Android
Один из способов – конвертировать доменные имена трекеров в IP-адреса и блокировать их с помощью iptables. Принципиальная проблема такого подхода – необходимость root-прав для выполнения, так как Android не дает прав на модификацию параметров брандмауэра. Но есть способ обойти это ограничение без root.
Если выделить весь трафик в отдельный виртуальный слой позволяющий фильтрацию на уровне приложения. Такой способ существует. С помощью VpnService можно создать локальный VPN, посредством которого можно фильтровать трафик по необходимым параметрам. Для реализации мы можем создать три очереди: сеть-устройство, устройство-сеть-tcp, устройство-сеть-udp. Сырой входящий/исходящий трафик записывается в очереди. Посредством четырех объектов TcpIn, TcpOut, UdpIn, UdpOut обрабатывать пакеты, в том числе утилизируя не проходящие проверку. Пример реализации можно посмотреть на Github (LocalVPN).
Фильтрация трафика на iOS
Для фильтрации трафика будем использовать NetworkExtension.
Как и на Android, ОС не дает нам прямого доступа к настройке брандмауэра. Но при этом есть возможность задать фильтр для сетевого контента из коробки посредством NEFilterControlProvider и NEFilterDataProvider. Мы данный вариант рассматривать не будем, так как Content Filter Providers работают только в контролируемом (supervised) режиме, из-за чего публикация такого приложения в AppStore становится невозможной. Если же такой подход интересен можно рассмотреть пример рабочего приложения на Github (sift-ios, FilterControlProvider, FilterDataProvider).
Для нашего решения мы также будем использовать локальный VPN. В NetworkExtension есть три варианта работы с VPN.
Personal VPN. Использует только встроенные протоколы. Нам это не подходит, так как необходим пользовательский протокол.
App Proxy Provider. Используется для создания пользовательского потокоориентированного VPN протокола. Для нас важна фильтрация отдельных пакетов, что приводит нас к.
Packet Tunnel Provider. Используется для создания пользовательского пакетоориентированного VPN протокола. Мы будем использовать именно его.
Для реализации мы наследуемся от NEPacketTunnelProvider. При запуске тоннеля нам необходимо указать конечную точку – укажем в её качестве локальный прокси сервер, для этого можем использовать, например, GCDHTTPProxyServer, так как он используется в примере который я приведу позже. С помощью прокси сервера на выбор мы утилизируем не нужные нам пакеты. Рабочий пример приложения с использованием NEPacketTunnelProvider и GCDHTTPProxyServer на Github (lockdown-ios PacketTunnelProvider).
Проблема приватности, при использовании удаленного VPN
Во всех примерах выше опускался вариант простого подключения к удаленному VPN, на котором настроена фильтрация. Такой вариант имеет серьезные плюсы – простоту создания клиентов под любую систему (на которой есть возможность использовать VPN) и возможность скрыть фильтры. Но критическим минусом является необходимость проводить трафик через сторонний удаленный сервер. Это требует наличия сетевой инфраструктуры и вызывает недоверие пользователей (так как трафик проходит через сторонний сервер для фильтрации). Данный вариант хоть и имеет свое место и значимость, но не является целью данной статьи.
Несколько слов в заключение
Сегодня мы рассмотрели способы реализации фильтров трафика для ОС Android и iOS. Рассмотрели самый не ограничивающий способ – локальный VPN и основы его реализации с примерами готовых продуктов и примеров. Для этого мы воспользовались возможностью создания пользовательских протоколов VPN. С их помощью мы с прикладного уровня получили доступ к сетевому, что позволило нам применить фильтр к входящим/исходящим пакетам. Фильтр мы основываем на черных списках доменов трекеров, доступных в сети интернет.
Статья подготовлена для Telegram канала @paradiSEcurity.
8 приложений для Android, которые нужно удалить. Они опасны
Кто бы что ни говорил, но Google Play – это помойка. Не даром её признали самым популярным источником вредоносного софта для Android. Просто пользователи в большинстве своём доверяют официальном магазину приложений Google и скачивают оттуда любое ПО без разбору. А какой ещё у них есть выбор? Ведь их всегда учили, что скачивать APK из интернета куда опаснее. В общем, это действительно так. Но остерегаться опасных приложений в Google Play нужно всегда. По крайней мере, постфактум.
Есть как минимум 8 приложений, которые нужно удалить
Google добавила в Google Play функцию разгона загрузки приложений
Исследователи кибербезопасности из антивирусной компании McAfee обнаружили в Google Play 8 вредоносных приложений с многомиллионными загрузками. Попадая на устройства своих жертв, они скачивают получают доступ к сообщениям, а потом совершают от их имени покупки в интернете, подтверждая транзакции кодами верификации, которые приходят в виде SMS.
Вредоносные приложения для Android
Нашли вирус? Удалите его
В основном это приложения, которые потенциально высоко востребованы пользователями. Среди них есть скины для клавиатуры, фоторедакторы, приложения для создания рингтонов и др.:
Это названия пакетов приложений, то есть что-то вроде их идентификаторов. Поскольку всё это вредоносные приложения, их создатели знают, что их будут искать и бороться с ними. Поэтому они вполне могут быть готовы к тому, чтобы менять пользовательские названия приложений, которые видим мы с вами. Но это мы не можем этого отследить. Поэтому куда надёжнее с этой точки зрения отслеживать именно идентификаторы и удалять вредоносный софт по ним.
Как найти вирус на Android
Но ведь, скажете вы, на смартфоны софт устанавливается с пользовательскими названиями. Да, это так. Поэтому вам понадобится небольшая утилита, которая позволит вам эффективно выявить весь шлаковый софт, который вы себе установили, определив название их пакетов.
В красном квадрате приведен пример названия пакета
Package Name Viewer удобен тем, что позволяет не просто найти нужное приложение по названию его пакета, но и при необходимости перейти в настройки для его удаления. Для этого достаточно просто нажать на иконку приложения, как вы попадёте в соответствующий раздел системы, где сможете остановить, отключить, удалить накопленные данные, отозвать привилегии или просто стереть нежелательную программу.
Как отменить подписку на Андроиде
Лучше всего приложение именно удалить. Это наиболее действенный способ защитить себя от его активности. Однако не исключено, что оно могло подписать вас на платные абонементы, поэтому для начала проверьте свою карту на предмет неизвестных списаний, а потом просмотрите список действующих подписок в Google Play:
Если подписка оформлена через Google Play, отменить её ничего не стоит
В принципе, если подписка была оформлена через Google Play и оплата уже прошла, вы можете потребовать у Google вернуть уплаченные деньги. О том, как это делается, мы описывали в отдельной статье. Но поскольку разработчики таких приложений обычно тщательно продумывают способы воровства денег, как правило, они не используют встроенный в Google Play инструмент проведения платежей, чтобы их в случае чего не могли отозвать.
Новости, статьи и анонсы публикаций
Свободное общение и обсуждение материалов
Минувшая неделя снова не была богата на громкие события, но было в эти семь дней и то, что надо знать каждому. Например, о том, как в Google Play появились фейковые приложения для получения социальных выплат. Их надо не просто опасаться, а обходить ”за километр”. Так же проблемы с безопасностью могут быть у пользователей смартфонов с процессорами MediaTek. Выявленная уязвимость позволяет получать доступ к микрофону и прослушивать владельцев таких устройств. А еще на этой неделе мы выяснили, что пользователи Xiaomi смогут сами ремонтировать свои телефоны, а Google уже готовит крутой Google Pixel 6a. Эти и другие новости в нашей традиционной еженедельной подборке.
Несмотря на то что современные смартфоны уже давно оснащаются продвинутыми инструментами защиты от посторонних, это не даёт стопроцентной гарантии от несанкционированного доступа. Ведь биометрия – это всего-навсего ширма, которую легко подвинуть, подобрав пароль. Так что полагаться на имеющиеся способы обеспечения безопасности целиком и полностью несколько опрометчиво. Всё-таки зачастую наши смартфоны хранят в себе кучу личной информации, разглашение которой крайне нежелательно. Поэтому Google добавила в «Google Фото» крутой инструмент защиты.
“пользователи в большинстве своём доверяют официальном магазину приложений Google и скачивают оттуда любое ПО без разбору”, зачем судить по себе? Никто так не делает и вообще откуда этот дикий список того, что надо удалить?
«Поставьте непонятное приложение, дайте ему все возможные разрешения, чтобы удалить другое непонятное приложение». Больше похоже на заказ от конкурентов
Bookmark Provider что это за программа на Android?
Всех приветствую
Сегодняшняя заметка будет особо интересна владельцам мобильных устройств на базе Андроид. Это уже не просто телефоны, это чуть ли не настоящие компьютеры, поэтому нет ничего удивительного в том, что и тут часто появляются неизвестные программы. Вот сегодня я постараюсь узнать максимум инфы о таком приложении как Bookmark Provider (com.android.bookmarkprovider), ну и вам тут все расскажу, надеюсь что вы будете довольны..
Порылся в интернете и увы, инфы о программе Bookmark Provider оч мало, вернее ее нет вообще. Пришлось мне искать в глубинах интернета и вот узнал, что в программе Bookmark Provider у вас может появляться ошибка при использовании браузера Google Chrome. Некоторые юзеры говорят, что ошибка исчезает, если несколько раз нажать на кнопку ОК.
На одном форуме опытный юзер пишет, что он данное приложение отключил, для этого нужно пойти в настройки, выбрать там пункт Приложения, найти Bookmark Provider и отключить его. Если не можете найти, то попробуйте нажать в правом верхнем углу экрана на три точки, далее выберите Системные приложения и найдите Bookmark Provider
Смотрите, вот нашел картинку, тут пишется что 17.6% of battery consumed by (App Sucker), это как я понимаю анализируется потребление программами энергии батареи и как видно, то у Bookmark Provider нулевой процент:
Но встречал в интернете сообщения что программа Bookmark Provider кушала прилично батарею
Приложение Bookmark Provider имеет свой главный файл под названием BookmarkProvider.apk, это вам на заметку так бы сказать. НЕ МОГУ ГАРАНТИРОВАТЬ, но вроде бы приложение Bookmark Provider это что-то типа менеджера закладок (ну или избранного). Слово Bookmark может означать как и простые закладки в виде веб-сайтов так и информационные закладки в виде контактной информации (эмейл, почта, телефон). Многие пользователи отмечают, что пользы от программы нет, и поэтому ее можно отключить. Я бы отключил, но вы должны решать самостоятельно, вы же серьезные люди
Вот еще одна картинка, тут кстати вверху есть такое как Cross App, но что это? Я не знаю, увы.. вот сама картинка, смотрите:
Приложение Bookmark Provider может быть замечено на устройстве с Андроид версией 2.3 и выше. ВРОДЕ БЫ Bookmark Provider даже был в официальном магазине Плей Маркера, однако сейчас там ее нет, почему? Странновато ребята.. Вот нашел еще одну картинку, тут написано такое как Exclude Apps (сорри но тоже не знаю что это):
И еще, программа Bookmark Provider вроде как много места не занимает на смартфоне, а вот и картинка-подтверждение:
Ребята, давайте я вам сейчас накидаю план действий, ок? Так бы сказать ПОДЫТОЖИМ все что я тут написал и подумаем вместе ЧТО ДЕЛАТЬ. Итак, мои выводы:
Вот ребята и все на этом, главное это то, что мы поняли что Bookmark Provider это НЕ ОСОБО ВАЖНАЯ программа. Нет, гарантировать я вам это не могу, но уверен на 95%. Так что пробуйте отключить. Извините если что не так я тут написал, инфы в интернете мало, а желание помочь вам у меня большое. Все, до новых встреч
Работа с данными. FOR-архитектура, часть 1
Сразу извиняюсь за свою манеру повествования, ибо она похоже больше на поток сознания, но главное уловить суть, которую я хочу донести.
Я хочу подготовить небольшой цикл публикаций про работу с данными:
Общий обзор FOR-архитектуры (эта статья)
Взгляд на валидацию данных и частные применения
Разбор FOR со стороны поставщика данных (ключевая часть, нужная для понимания всей картины)
Гомогенность данных в больших распределенных системах (идея, выросшая из валидации и использующая те же механизмы)
Начнем с определения кому надо
Если рассматривать разработку веб приложений, то я бы выделил 2 вектора:
Данный параграф обозначил аудиторию моего подхода и моих идей, я полагаю не стоит в «быстрой» разработке использовать то, что я предлагаю, потому что это будет сильно дольше и, соответственно, дороже.
Начнем с ситуации. Рассмотрим 2 кейса.
Первый:
У вас react/vue/что-то иное
Есть некий компонент (форма создания какой-то элемента)
Поля формы сильно отличаются от контекста и типа этого элемента (к примеру, товары в магазине)
Программист в начале имел всего 3 типа и всё было хорошо. Он за каждым ходит на бек, прямо внутри всего чудного компонента
По моему видению, это всегда должно быть иначе
Плюсы очевидны по мне.
Не зависимость от поставщика
Легкий рефакторинг (данных)
Мы можем добавить ttl-кеш в наш провайдер (логи, единая точка валидации отправляемых и получаемых данных по роута и многое другое), формы редко меняются. В таком случае форма будет уже мгновенно вызываться
Концепция работы Data Providers на фронте:
На бекенде, это выглядит примерно также:
Моё видение реализации
Data Provider имеет 2 механизма работы:
Также мы тут добавляем некий массив примитивных операций со статичным интерфейсом, когда фильтры избыточны, их может быть достаточно много и они также могут скрывать внутри себя фильтры, обеспечивая единообразие и одновременно упрощенный синтаксис.
Конкретика
Архитектура состоит из 2 частей: пользователь и поставщик.
Поставщика я хочу детальнее описать позже, пока приведу пример реализации, который более нагляден
Концепция его работы:
Теперь взгляд со стороны использования:
Реализация внутри системы (back / php)
И немного посложнее
Именно это часть из архитектуры идёт в модель, а затем в БД (если речь про бек) или на апи (если речь про фронт).
Немного рефлексии, для цельности картины:
Основные тезисы, которых точно стоит придерживаться в работе с данными
Каждое разрабатываемое приложение должно иметь четкую, единообразную структуру (но бывает много исключений)
Android. Собеседование #2. Компоненты приложения
Вопросы по основным элементам, из которых состоит приложение на Android.
1. Назовите основные компоненты Android приложение
Основными компонентами приложения Android являются:
– Activity
– Service
– Broadcast receiver
– Content provider
Все компоненты Также некоторые относят к ним Intent, но на официальном сайте по разработке на Android он отсутствует.
2. Что такое Activity?
Это компонент приложения, который представляет собой экран, с которым пользователи могут взаимодействовать для выполнения каких-либо действий, например набрать номер телефона, сделать фото, отправить письмо или просмотреть карту. Каждой Activity присваивается окно для прорисовки соответствующего пользовательского интерфейса.
3. Опишите жизненный цикл Activity
Жизненный цикл представляет собой последовательность методов, которые вызываются в определенной последовательности во время создания/уничтожения/приостановки Activity.
– onCreate()
Необходимо обязательно реализовать, поскольку система вызывает его при создании Activity. Важно именно здесь вызвать метод setContentView() для определения пользовательского интерфейса. Вызывается первым, во время создания Activity. Вызывается один раз, после чего наше Activity переходит в состояние Created. В данном методе мы инициализируем интерфейс нашего Activity, а также выполняем некоторую базовую логику, которая необходима нам для корректной работы Activity, например, создаём список с какими-либо данными. Также, в качестве аргумента метода onCreate нам передаётся объект Bundle, который содержит в себе информацию, которая была предварительно сохранена, во время пересоздания Activity.
– onStart()
Переводит нашу Activity в состояние Started, после чего Activity становится видно для пользователя. Метод может использоваться для какой-либо логики, которая взаимодействует с UI.
– onResume()
Наше Activity переходит на передний план приложения (foreground) изменяя своё состояние на Resumed. После вызова данного метода, пользователь может взаимодействовать с Activity. В данном состоянии Activity остается до тех пор, пока не потеряет фокус, это может произойти, например, при переходе на другую Activity, либо при входящем телефонном звонке.
– onPause()
Наше Activity теряет фокус, больше не видно для пользователя и выходит из состояния foreground. При этом Activity не уничтожается и продолжает существовать. В этом методе, например, мы можем приостановить логику связанную с GPS навигацией, чтобы минимизировать расход батареи.
– onStop()
Состояние Activity изменяется на Stopped. Вызывается, когда Activity не видно пользователю, например, при переходе на другой экран или при сворачивании приложения, а также при подготовке к полному уничтожению нашей Activity. системой.
– onDestroy()
Метод вызывается непосредственно перед уничтожением нашей Activity, например, после вызова метода finish(), или переходе на предыдущую Activity, путём нажатия кнопки “назад”.
Если активность завершается, onDestroy() – это последний метод жизненного цикла, который вызывает Activity. Если onDestroy() вызывается в результате изменения конфигурации, система немедленно создает новый экземпляр активности вызывает onCreate() в новом экземпляре и новой конфигурации.
Метод onDestroy() должен освобождать все ресурсы нашей Activity.
При повороте экрана система полностью пересоздаёт экземпляр Activity. Для того, что сохранить какие-либо пользовательские данные и затем восстановить их в нашей Activity, используются следующие методы:
– onSaveInstanceState()
Данный метод вызывается перед тем, как Activity будет уничтожена. Параметром метода является Bundle, в который мы будем складывать необходимые для сохранения данные. Рекомендуется сохранять данным способом информацию, объём которой не превышает 1 мегабайт, в случае превышения лимита мы получим ошибку TransactionTooLargeException.
– onRestoreInstanceState()
Вызывается после метода onStart(). В данный метод мы получим наш Bundle, в котором была сохранена информация.
Стоит заметить, что Bundle с сохранёнными данными мы также получаем в методе onCreate(), но данную ситуацию нужно отдельно обрабатывать, чтобы не получить NullPointerException.
4. Что такое Service?
Service (служба) — это компонент android-приложения без видимого интерфейса, который работает в фоновом режиме. Служба обязательно должна быть объявлена в файле AndroidManifest в теге application:
Service запускается в главном потоке приложения, поэтому если необходимо обработать в нём какую либо тяжёлую логику, необходимо создавать в нём новый поток.
Service бывает нескольких типов:
– Foreground Service;
– Background Service;
– Bound Service.
Дополнительные ответы по Android Services читайте тут.
5. Опишите Broadcast receiver?
Приёмник широковещательных сообщений — это компонент для получения сообщений (Intent) и реагирования на них. Сообщения отправляются при помощи метода sendBroadcast(). Для обработки широковещательных сообщений необходимо создать объект IntentFilter и связать его с Broadcast receiver:
BroadcastReceiver можно динамически зарегистрировать с помощью метода registerReceiver(), или статически создать его в тэге в файле AndroidManifest приложения. Запускается в главном потоке приложения.
BroadcastReceiver может принимать сообщения от системы, например, если телефон был установлен на зарядку либо система Android была запущена.
6. Способ применения ContentProvider?
Поставщик содержимого представляет собой оболочку над базой данных приложения. Если наше приложение использует базу данных SQLite, то только оно имеет к ней доступ. Поставщик содержимого применяется лишь в тех случаях, когда необходимо использовать данные совместно с другими приложениями, работающими на устройстве. Запускается в главном потоке приложения, поэтому для обработки запросов к базе данных, необходимо использовать другой поток. Например при помощи ContentProvider мы можем получить контакты из записной книги телефона или SMS.
7. Что такое ContentResolver?
ContentResolver необходим для выполнения запросов к ContentProvider другого приложения. ContentResolver включает в себя методы CRUD (create, retrieve, update, delete) для запросов и транзакций. Объекту ContentResolver необходимо передать путь URI, в котором указано, к какому объекту ContentProvider необходимо обращаться.