463 Stimmen

Bewährte Verfahren zum Speichern und Schützen privater API-Schlüssel in Anwendungen

Die meisten Entwickler von Anwendungen integrieren einige Bibliotheken von Drittanbietern in ihre Anwendungen. Sei es, um auf einen Dienst wie Dropbox oder YouTube zuzugreifen, oder um Abstürze zu protokollieren. Die Anzahl der Bibliotheken und Dienste von Drittanbietern ist atemberaubend. Die meisten dieser Bibliotheken und Dienste werden integriert, indem man sich auf irgendeine Weise beim Dienst authentifiziert, meistens geschieht dies über einen API-Schlüssel. Aus Sicherheitsgründen generieren die Dienste in der Regel einen öffentlichen und einen privaten, oft auch als geheim bezeichneten, Schlüssel. Leider muss dieser private Schlüssel zur Authentifizierung verwendet werden, um eine Verbindung zu den Diensten herzustellen, und ist daher wahrscheinlich Teil der Anwendung. Dies stellt natürlich ein großes Sicherheitsproblem dar. Öffentliche und private API-Schlüssel können innerhalb weniger Minuten aus APKs extrahiert werden und lassen sich leicht automatisieren.

Angenommen, ich habe etwas Ähnliches, wie kann ich den geheimen Schlüssel schützen?

public class DropboxService  {

    private final static String APP_KEY = "jk433g34hg3";
    private final static String APP_SECRET = "987dwdqwdqw90";
    private final static AccessType ACCESS_TYPE = AccessType.DROPBOX;

    // SOME MORE CODE HERE

}

Was ist Ihrer Meinung nach die beste und sicherste Art, den privaten Schlüssel zu speichern? Verschleierung, Verschlüsselung, was denken Sie?

6voto

Nick Punkte 2465

Die einzige Möglichkeit, diese Daten geheim zu halten, besteht darin, sie auf Ihrem Server zu speichern und die App die Daten an den Server senden zu lassen, der dann mit Dropbox interagiert. Auf diese Weise können Sie Ihren privaten Schlüssel NIEMALS in irgendeinem Format weitergeben.

5voto

Ahmed Awad Punkte 1699

Ein älterer Beitrag, aber immer noch gut genug. Ich denke, es in einer .so-Bibliothek zu verstecken wäre großartig, mit NDK und C++ natürlich. .so-Dateien können in einem Hex-Editor angezeigt werden, aber viel Glück dekompilieren, dass :P

5voto

Manohar Punkte 19019

Behalten Sie das Geheimnis für sich firebase database und von dort abrufen, wenn die App startet, Das ist viel besser als der Aufruf eines Webdienstes.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X