在Xamarin Forms中存储client_id和client_secret for rest API的位置

时间:2018-05-29 10:49:26

标签: security xamarin.forms

最近,我一直在解决安全问题,通过获取我的client_id和client_secret可以破坏我的应用程序。

我的实现是使用PCLAppConfig插件将配置数据存储在配置文件(App.config)中。对此的概述是,您将创建一个配置文件,其构建操作为嵌入式资源。

我认为这很安全,因为它存储在配置文件中,之后我的朋友试图在我的应用上进行渗透测试。基本上他只是做以下事情:

  1. 在Google Play商店中下载该应用(适用于Android的示例)
  2. 获取apk等效文件。 (他使用Share It)
  3. 将.apk文件重命名为.zip
  4. 使用反射工具打开,您将看到所有dll文件。然后他看到在dll文件(PCL类)下,他可以看到.config文件。
  5. 此刻,他知道用户不应知道的所有机密数据。

    我的问题是,如何安全地存储这些机密数据。它不应该是硬编码的,因为所有代码都转换为.dll文件,并且可以使用反射工具进行跟踪。

    更新

    仍然没有解决方案

3 个答案:

答案 0 :(得分:0)

也许您可以使用 Xamarin Essentials 中的 SecureStorage

https://docs.microsoft.com/en-us/xamarin/essentials/secure-storage?tabs=android

...

try
{
  await SecureStorage.SetAsync("oauth_token", "secret-oauth-token-value");
}
catch (Exception ex)
{
  // Possible that device doesn't support secure storage on device.
}

答案 1 :(得分:-2)

您最好的选择是在应用程序启动时从您的服务中检索您的密钥,以便不在您的应用程序中对您的密钥进行硬编码,然后将其保存在属性字典中。类似的东西:

Application.Current.Properties ["keys"] = YourConfigurationManager.GetKeys();

答案 2 :(得分:-3)