如何在Java文件中安全地存储API密钥等密钥,以防止黑客攻击?

7
我正在开发一款Android应用程序,我很担心API和其他密钥的应用程序安全性。因此,我需要一种方法来保护它们不被黑客攻击!我已经尝试将这些密钥存储在Firebase上,但这并不是一个完美的方法,因为它会在Firebase上使用大量数据并且需要时间才能接收。

请尝试使用证书验证和/或JNI。 - The Badak
2
@TheBadak,这两个都不安全。JNI只是让他们反向工程化简单的C代码,实际上你可能会让它变得更容易。证书并不能保护它,他们可以拿走你的证书并使用它。唯一安全的方法是根本不在客户端中存储它。 - Gabe Sechan
https://medium.com/@sagarsuri56/secure-your-api-keys-locally-like-a-champ-985bb8bbed18 - sagar suri
1
@A.easazadeh:关于您的编辑,请不要将代码格式应用于非代码项。不幸的是,这并不能使它们更易读。 - halfer
it would be helpfull - Megamind Core
1个回答

2

一个安全的选择是将KEY API值保存在local.properties文件中。

在您的app/build.gradle文件中添加对API KEY的引用:

最初的回答:

android {
     ...

    defaultConfig {
        ...
        buildConfigField "String", "myAPI_KEY", "\"API_KEY_VALUE\"" 
        ...
    }
     ...

}

local.properties 文件中添加以下条目以定义 API KEY 的值:

最初的回答:

API_KEY_VALUE="AIzaSy..............."

然后,构建您的项目,您可以从BuildConfig类中获取API KEY的值,例如:

"最初的回答":构建您的项目,然后您可以从BuildConfig类中获取API KEY的值,例如:
 String myApiKey = BuildConfig.myAPI_KEY;

黑客在反编译.apk文件时,很容易获取Build.gradle文件,然后他们可以滥用我的API。 - Megamind Core
@MegamindCore 不,API KEY 值存储在 local.properties 文件中。 - Jorgesys
1
是的,你说得对,因为它不是内置的。Gradle - Megamind Core
代码只是一个例子,你正在使用SafetyNet吗? - Jorgesys
抱歉,由于我的愚蠢错误,我认为它会像 Firebase 检索数据一样工作。 - Megamind Core

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接