Как безопасно хранить секретные токены при публикации приложения для iOS (Nativescript) - PullRequest
0 голосов
/ 05 декабря 2018

В моем приложении Nativescript есть несколько секретных токенов API.Я хочу опубликовать приложение в магазине приложений iOS.Что мне нужно сделать, чтобы сохранить токены в секрете при публикации приложения?

Я вижу обсуждение здесь о хранении секретов с использованием переменных среды webpack.Я новичок в вебпаке, но, похоже, это лучший способ сделать это.

После этого обсуждения я могу положить свои токены в комплект вебпакета (вместо жесткого кодирования), например так:

$ tns run ios --bundle --env.uglify --env.aot --env.secret_token="yaySecret"

Но держит ли это в тайне "yaySecret"?Я не вижу этого нигде в документах NS или в Интернете.

Я предполагаю, что эта команда bundle создает пакет, а затем этот пакет становится частью того, что Apple публикует.Но тогда Apple не может просматривать "yaySecret"?

1 Ответ

0 голосов
/ 05 декабря 2018

Uglify фактически выполняет эту работу здесь (--env.uglify).

--env.secret_token будет просто параметром, который передается компилятору.Это заменит вхождение переменной в исходном коде фактическим значением, основанным на конфигурации вашего веб-пакета.

В вашей конфигурации веб-пакета должно быть что-то похожее

 // Define useful constants like TNS_WEBPACK
 new webpack.DefinePlugin({
  "global.TNS_WEBPACK": "true",
  "global.SECRET_TOKEN": JSON.stringify(env.secret_token),
  "process": undefined,
 }),

Так что все вхожденияglobal.SECRET_TOKEN в вашем фактическом исходном коде будет заменен фактическим токеном, который вы передали в командной строке.

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

На рынке есть много других минимизаторов / обфускаторов, javascript-obfuscator - это один бесплатный инструмент, который я часто видел, как люди используют NativeScript.Все эти инструменты имеют множество опций, и если вы хотите правильно зашифровать свой код, вам, возможно, придется уделить больше внимания этим опциям.

Существуют даже платные инструменты, такие как jscrambler .Использование Обфускаторов не ограничивается NativeScript / JavaScript, даже многие нативные приложения для Android используют Java Obfuscator для предотвращения извлечения исходного кода и конфиденциальной информации из APK.Поэтому использование Обфускатора очень распространено независимо от выбранной вами платформы.

Кроме того, вы можете просто не жестко кодировать свой токен.Вы можете передать некоторое зашифрованное значение в env.secret_token, а затем написать некоторую сложную функцию, которая может принять это зашифрованное значение и выдать вам фактический токен во время выполнения.Конец дня - все дело в том, чтобы сделать ваш код сложнее взломать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...