In meinem Fall verwende ich die Dropbox-API. Momentan speichere ich den Schlüssel und das Geheimnis in einer JSON-Datei, nur damit ich es gitimnore und es aus dem Github-Repo heraushalten kann, aber offensichtlich ist das nicht besser, als es aus Sicherheitsgründen im Code zu haben. Es gab viele Fragen zum Schutz/Verschleierung von Python vor (in der Regel aus kommerziellen Gründen) und die Antwort ist immer "Do not, Python ist nicht dafür gedacht."Wie sollte ich API-Schlüssel in einer Python-App speichern?
Ich bin also nicht auf der Suche nach einer Möglichkeit, den Code zu schützen, sondern nur nach einer Lösung, die es mir erlaubt, meine App zu verbreiten, ohne meine API-Details offenzulegen.
stopfen sie in einer Textdatei als verschlüsselte Werte. Erstellen Sie einen privat gespeicherten Verschlüsselungsschlüssel, entschlüsseln Sie ihn bei Bedarf. Es könnte einen besseren Weg geben, aber dieser Weg hat in der Vergangenheit gut funktioniert. –
Wenn jemand das Programm auf seinem Computer ausführt und das Programm den Schlüssel verwendet, wird es praktisch offenbart. Es braucht kein Genie, um WireShark hochzufahren, das Programm zu verbinden und das Capture nach Verbindungen mit Dropbox zu filtern (oder nach einem anderen Kriterium - im schlimmsten Fall durch ein paar hundert Pakete). Und das bloße Verschleiern des Programms würde Ihnen nichts kaufen, da Sie das String-Literal, das der API-Schlüssel ist, nicht ändern können, oder es wäre für Ihr Programm nutzlos. – delnan
@delnan Aber würde der API-Schlüssel im HTTP-Verkehr sichtbar sein? Dropbox macht alles über SSL. Ich weiß nicht, ob sie GET- oder POST-Variablen verwenden oder sie einfach in die Header der HTTP-Anfrage einfügen. Werden diese Dinge in einer HTTPS-Anfrage oder nur im Hauptteil der Anfrage verschlüsselt? – espekia