🕵️‍♂️ «Я спрятал ключ в константу»: Как Джуны дарят доступы хакерам

Вы интегрировали крутое платное API (например, карты или ИИ). Где вы храните секретный API_KEY?
Если ваш ответ: «В файле Constants.kt», «в strings.xml» или «просто текстом в классе» - у меня для вас плохие новости.

Любой школьник может скачать ваш APK или IPA файл, разархивировать его и достать ваши ключи за 5 минут с помощью базовых утилит для реверс-инжиниринга. А потом вы получите счет от сервиса на 10 000$ за чужой трафик.

То же самое касается пользовательских токенов (Bearer token). Если вы сохранили его в обычный SharedPreferences или UserDefaults - считайте, что вы написали пароль на стикере и приклеили его на монитор в коворкинге.

🛡 Как делают Мидлы (Защита секретов):

1. Правило №1: Никогда не пушьте ключи в Git!
Даже в приватный репозиторий. Используйте локальные файлы local.properties (Android) или .xcconfig (iOS), которые обязательно должны быть добавлены в .gitignore.
2. Токены пользователей (Авторизация):

• 🤖 Android: Забудьте про голый SharedPreferences. Используйте EncryptedSharedPreferences из библиотеки AndroidX Security. Он работает точно так же, но аппаратно шифрует ключи и значения через систему Android Keystore.
• 🍏 iOS: Никаких UserDefaults для токенов. Только Keychain. Данные в Keychain аппаратно зашифрованы на уровне операционной системы (Secure Enclave) и недоступны другим приложениям.

3. Глобальные API-ключи (Как их прятать):

• Уровень "Нормально": Пробрасывать ключи во время сборки через CI/CD (GitHub Actions) прямо в BuildConfig. Это уберет ключи из исходников, хотя и не защитит от декомпиляции готового приложения на 100%.
• Уровень "Параноик" (Android): Прятать ключи в C++ коде через NDK (Native Development Kit). Декомпилировать нативную C-библиотеку (.so) в десятки раз сложнее, чем байт-код Java/Kotlin.
• Уровень "Бог": BFF (Backend for Frontend). Приложение вообще не знает никаких сторонних ключей. Оно делает запрос на ВАШ сервер, а уже ваш сервер безопасно подставляет секретный ключ и идет в стороннее API.

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

#security #android #ios #keychain #keystore #middle #development
Просмотры: 43
Открыть в MAX Сообщить о неточности

Сообщить о неточности

Опишите, что нужно исправить. Если есть источник, добавьте ссылку.

Вы покидаете datool.ru

Ссылка ведёт на внешний сайт. datool.ru не отвечает за его содержимое — проверьте адрес, прежде чем вводить пароли или платёжные данные.

Переход через 10 с

Перейти