我正在构建基于移动终端示例应用的应用。 sample-app的API密钥存储在类文件AWSconfiguration:
中public class AWSConfiguration {
// AWS MobileHub user agent string
public static final String AWS_MOBILEHUB_USER_AGENT =
"MobileHub ********* aws-my-sample-app-android-v0.16";
// AMAZON COGNITO
public static final Regions AMAZON_COGNITO_REGION =
Regions.fromName("us-east-1");
public static String AMAZON_COGNITO_IDENTITY_POOL_ID = "us-east-************6";
// Google Client ID for Web application
public static String GOOGLE_CLIENT_ID ="";//"*********************.apps.googleusercontent.com";
public static final Regions AMAZON_DYNAMODB_REGION =
Regions.fromName("us-east-1");
public static String AMAZON_COGNITO_USER_POOL_ID = "************";
public static String AMAZON_COGNITO_USER_POOL_CLIENT_ID = "*************";
public static String AMAZON_COGNITO_USER_POOL_CLIENT_SECRET = "*************";
private static final AWSMobileHelperConfiguration helperConfiguration = new AWSMobileHelperConfiguration.Builder()
.withCognitoRegion(AMAZON_COGNITO_REGION)
.withCognitoIdentityPoolId(AMAZON_COGNITO_IDENTITY_POOL_ID)
.withCognitoUserPool(AMAZON_COGNITO_USER_POOL_ID,
AMAZON_COGNITO_USER_POOL_CLIENT_ID, AMAZON_COGNITO_USER_POOL_CLIENT_SECRET)
.build();
/**
* @return the configuration for AWSKit.
*/
public static AWSMobileHelperConfiguration getAWSMobileHelperConfiguration() {
return helperConfiguration;
}
}
以这种方式存储客户端密钥似乎不安全。有什么风险?
我体验过将密钥隐藏在JNI文件中但在活动中找不到正确的入口点,以便在从移动助手调用密钥之前设置密钥。
答案 0 :(得分:2)
正如您猜测的那样,以明文形式存储通常是一个坏主意。您可以使用android密钥库,将其加密(密钥越强,越好),使用设备的某个唯一标识符对其进行模糊处理,或通过您控制和保护的某些API访问它。可以使用其他一些解决方案,或上述可能性的组合。最终的决定取决于您以及您的应用需求/能力,但有几种方法可以隐藏它。
答案 1 :(得分:0)
SharedPreferences.Editor可以是一个解决方案。 密码或类似内容存储在SharedPreferences中。