2017-05-22 3 views
0

Ich baue eine App basierend auf der mobilen Hub-Beispiel-App. Die Probe-App hat die API in einer Klassendatei AWSconfiguration gespeicherten Schlüssel:MobileHub, wo API-Schlüssel zu speichern sind

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; 
    } 



} 

Es scheint unsicher, dem Kunden geheimen Schlüssel auf diese Weise zu speichern. Was sind die Risiken?

Ich habe mit dem Ausblenden der Schlüssel in JNI-Dateien experimentiert, konnte aber nicht den richtigen Einstiegspunkt in der Aktivität finden, um die Schlüssel festzulegen, bevor sie vom mobilen Helfer aufgerufen werden.

Antwort

2

Das Speichern im Klartext ist generell eine schlechte Idee, wie Sie vermutet haben. Sie könnten den androiden Keystore verwenden, ihn verschlüsselt speichern (je stärker der Schlüssel, desto besser), ihn mit einer eindeutigen Kennung Ihres Geräts verschleiern oder über eine von Ihnen kontrollierte und gesicherte API darauf zugreifen. Es ist möglich, eine andere Lösung oder eine Kombination der oben genannten Möglichkeiten zu verwenden. Die endgültige Entscheidung kommt auf dich und was deine App benötigt/Fähigkeiten sind, aber es gibt ein paar Möglichkeiten, es zu verstecken.