Хранить секретный ключ в формах Xamarin - PullRequest
0 голосов
/ 26 июня 2019

Я пытаюсь понять, как хранить секреты в проекте форм xamarin.

У меня есть ядро ​​web api в качестве бэкэнда и приложение форм xamarin в качестве внешнего интерфейса.

Я являюсьпытаюсь закодировать аутентификацию facebook с помощью Xamarin.Auth, и мне нужно передать секретный ключ в мое приложение.

Мое мышление:

  1. Сохранить во внешнем интерфейсе: я могу создать файл конфигурациии зашифровать его, но расшифровка будет в моем исходном коде, и, декомпилируя и отражая, хакер может получить исходный код дешифрования и расшифровать секретный ключ.

2: сохранить в бэкэнде: я мог бы сохранитьключи в бэкэнде, но, перехватывая запросы, хакер мог получить мои секретные ключи.

Тогда каково решение?Как я могу это сделать?

Спасибо,

1 Ответ

0 голосов
/ 26 июня 2019

Вы можете сохранить свой секрет, используя Xamarin.Essentials . Для Android ваш секрет будет храниться в магазине ключей Android и в связке ключей в случае iOS. Даже если вы решите использовать зашифрованный файл конфигурации, я настоятельно рекомендую хранить ваши ключи и IV в SecureStorage вместо жесткого кодирования в исходном коде. Он чрезвычайно прост в использовании и, кроме того, безопасен для мобильных устройств.

try
{
   // write secret
   await SecureStorage.SetAsync("oauth_token", "secret-oauth-token-value"); 

   // read secret
   var token = await SecureStorage.GetAsync("oauth_token");
}
catch(Exception ex)
{
} 
...