TGViewer
paradiSEcurity paradiSEcurity @paradisecurity · 1.96K subscribers
Post #288 5.98K
Как создавать безопасные приложения

Несколько правил, пробежавшись по которым вы сделаете свое приложение максимально безопасным:

🔥 Безопасная связь между приложениями
• Неявные интеты. Стоит относится к ним с осторожностью, потому что на такой вид интентов может отреагировать любое приложение, установленное у пользователя.
• Разрешения на уровне подписи. Так можно проверить, что приложения, получающие доступ к данным, подписаны с использованием того же ключа подписи.
• Неэкспортируемый контент. Если вы не собираетесь отправлять данные из своего приложения в другие приложения, явно запретите другим приложениям доступ к вашему ContentProvider в манифесте с помощью
android:exported=false
.

🔥 Безопасное сетевое взаимодействие
Для любого типа сетевого взаимодействия нужно использовать HTTPS c проверкой сертификата. Не забудьте добавить networkSecurityConfig.

🔥 Аутентификация высокого уровня
Конфиденциальная информация может быть защищена с помощью многофакторной аутентификации, надежного управления сессией и таймаутами. Также важно настроить расширенную авторизацию с поддержкой таких инструментов, как веб-токены OAuth 2.0 или JSON.

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

🔥 Безопасное хранение данных
• Криптография – это самый эффективный способ обеспечить безопасность данных. Используйте соответствующий механизм шифрования при работе с данными.
• Чтобы добиться большей безопасности при хранении ключей, используйте систему Android Keystore.
• Храните все личные данные пользователя во внутренней памяти устройства, которая изолирована от других приложений. А когда пользователь решит удалить приложение, устройство удалит и все файлы, сохраненные приложением во внутренней памяти. Советую изучить работу EncryptedFile и почитать вот эту статью.
• Если вашему приложению требуется доступ только к определенному каталогу во внешнем хранилище устройства, используйте доступ к выделенным каталогам, чтобы ограничить доступ вашего приложения к внешнему хранилищу устройства.
• Если файл не содержит частной или конфиденциальной информации, но представляет ценность для пользователя только в вашем приложении, сохраните файл в каталоге для конкретного приложения во внешнем хранилище.
• Храните в файлах кеша только не конфиденциальные данные. Для кэшей размером более 1МБ используйте getExternalCacheDir(); в противном случае используйте getCacheDir().
• Используйте SharedPreferences в приватном режиме. Более того, следует использовать для большей безопасности EncryptedSharedPreferences, который автоматически шифрует ключи и значения.

🔥 Регулярно обновляйте зависимости!

🔥 Сжимайте, смешивайте и оптимизируйте код с помощью R8
С его помощью вы можете удалять неиспользуемые классы/поля/методы/атрибуты/зависимости/ресурсы, а также обфусцировать и оптимизировать код.

Это основные правила, которым должен следовать каждый разработчик мобильных приложений, чтобы защитить приложение от уязвимостей. Они помогут вам в разработке приложений с высоким уровнем защиты, необходимым для предотвращения получения ценной информации о пользователях вашего приложения и поддержания доверия ваших клиентов.
More from @paradisecurity
  1. Mar 4, 2025✈️ Еду в Китай и Японию! Я всегда организую свои поездки сама: покупаю билеты, бронирую ап…
  2. Feb 21, 2025photo post
  3. Feb 16, 2025💡 Почему большим компаниям так сложно создавать что-то действительно новое? Недавно обсуж…
  4. Jan 28, 2025🚀 Мысли вслух про ИИ, рынок и глобальные тренды Так вышло, что я немного в теме ИИ (делаю…
  5. Feb 14, 2024Смотрите что у меня есть! Сегодня коллеги из Yandex Cloud прислали подарок 🎁 Очень интере…
  6. Feb 12, 2024Тест-тест! Проверяем спам бота! Вылезайте спамеры и живо пишите мне в комменты, не зря же…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →