【问题标题】:Secure way of storing Secret credentials存储秘密凭证的安全方式
【发布时间】:2017-10-16 06:31:31
【问题描述】:

我有一个 Android 应用程序,我想将其部署用于商业用途。我正在使用 aws 机密凭据,目前我已将其硬编码在代码中。

是否有任何安全的方式来部署 Android 应用程序,通过将凭据作为外部参数传递。就像我们在服务器应用程序中所做的一样,将凭据作为环境变量传递。我不想在我的代码库中打开密钥。

我想知道是否有任何方法可以在 android 应用中做类似的事情。

【问题讨论】:

    标签: android security environment-variables firebase-security


    【解决方案1】:

    我会使用与Environment variables 相同的原理,但通过 Gradle。

    这个想法是你应该在你的用户文件夹中有一个gradle.properties 文件,Gradle 可以从中获取属性。当然,这个文件不会被添加到源代码管理中。

    你可以这样做

    ~/.gradle/gradle.properties

    projectAwsCred1=cred1
    projectAwsCred2=cred2
    

    build.gradle(应用程序)

    ...
    buildConfigField "String", "AWS_CRED_1", "\"projectAwsCred1\""
    buildConfigField "String", "AWS_CRED_2", "\"projectAwsCred2\""
    

    然后(在构建之后)你可以像正常的Build.AWS_CRED_1一样在你的代码中调用它

    这样,您的凭据将在您的应用中烘焙,但仅在构建时。您当然必须在自述文件中记录这一点,以便其他人(或未来的您)知道是否放置了projectAwsCred* 信息。

    【讨论】:

    • 感谢您的回答,
    【解决方案2】:

    根据您的设置,有几种方法可以做到这一点。可能最安全的方法是让您的应用程序实例承担一个具有所需权限的角色,这样您就根本不需要存储您的凭据。

    进一步阅读应该足以让您入门:http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2.html

    【讨论】:

    • 感谢您的回答
    【解决方案3】:

    我发现了以下在构建时将凭据作为环境变量传递给 apk 的方法。这些将存储为构建变量。

    在您的项目目录中创建一个 gradle.properties 文件并添加您的凭据:

    AWS_CRED=aws_cred
    

    在您的 gradle 构建文件中,在 android 下添加以下内容:

    android {
    defaultConfig{
    manifestPlaceholders=[AWS_CRED:AWS_CRED]
    }
    }
    

    这样做的目的是,它将构建变量传递给您的 android 清单。现在转到 AndroidManifest.xml 并在标签下添加以下内容:

    <application
    <meta-data
                android:name="AWS_CRED"
                android:value="${AWS_CRED}" />
    </application>
    

    现在访问任何 java 代码中的值,如下所示:

    applicationInfo = getApplicationContext().getPackageManager().getApplicationInfo(getApplicationContext().getPackageName(), PackageManager.GET_META_DATA);
    

    这个方法对我有用,如果有人知道更好的方法,请评论。

    【讨论】:

      猜你喜欢
      • 2020-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-12
      • 1970-01-01
      • 1970-01-01
      • 2013-11-19
      • 2011-02-15
      相关资源
      最近更新 更多