2017-02-18 68 views
2

У меня есть куча ключей и секретов API (Stripe, Cloudinary и т. Д.), Которые в настоящее время жестко закодированы в моем приложении. Где подходящее место для их хранения? Должны ли они быть на сервере, и я просто сохраняю URL-адрес сервера на своем конце (чтобы, если ключи меняются, приложение продолжает работать)?Где хранить ключи API на Swift?

, например, у меня есть это в моем файле делегат приложения:

func configureStripe(){ 
      STPPaymentConfiguration.sharedConfiguration().publishableKey = "pk_test_1234rtyhudjjfjjs"   

STPPaymentConfiguration.sharedConfiguration().appleMerchantIdentifier = "merchant.com.myapp" 
    } 
+1

Да, секретные ключи обязательно должны быть только на вашем сервере и * никогда никогда * в коде на стороне клиента. –

+0

Если вы хотите сохранить их на стороне клиента, я считаю, что использование библиотеки, такой как 'SSKeyChain', будет полезно – KrishnaCA

+1

Я не уверен насчет Cloudinary, но с Stripe ключ, который вы используете на клиенте, является опубликованнымKey. Это не то, что считается защищенным полосой для любых взаимодействий с их API. Вот почему вам нужно делать все с сервера, используя другой секретный ключ. Никогда не храните что-либо на стороне частного клиента, но если его абсолютно необходимо, не перекодируйте его в приложение или не храните в plist. Опция делает сетевой запрос из вашего приложения на ваш сервер, чтобы получить ключ, использовать SSL и хранить в цепочке ключей. Все еще не полностью безопасен, но должен делать что-то не очень чувствительное. – JustinM

ответ