2012-04-27 4 views
7

私の場合、Dropbox APIを使用しています。現在、キーとシークレットをJSONファイルに保存しています.Gitignoreを使用してGithubのリポジトリから外しておくことができますが、セキュリティ上の観点からはコードに含めるよりも優れています。 Pythonの保護や難読化については(商業上の理由から)多くの質問がありました。答えは常に「Pythonはそれを意味しません」です。APIキーをPythonアプリケーションにどのように格納すればよいですか?

私はコードを保護する方法を探しているのではなく、APIの詳細を開示せずにアプリを配布できるソリューションを探しています。

+0

テキストファイルに暗号化された値として入力してください。秘密に保存された暗号化キーを作成し、必要なときに復号化します。しかし、よりよい方法があるかもしれませんが、この方法は私のために過去にうまくいきました。 –

+0

誰かが自分のコンピュータ上でプログラムを実行し、プログラムがそのキーを使用すると、実際に開示されます。 WireSharkを起動してプログラムを接続させ、Dropbox(または他のいくつかの基準 - 最悪の場合は数百パケットを掘り下ろしている)への接続のためにキャプチャをフィルタリングするのは天才的なものではありません。 APIキーがある文字列リテラルを変更することはできないので、プログラムを難読化するだけでは何も買わず、プログラムには役に立たないでしょう。 – delnan

+0

@delnanしかし、HTTPトラフィックではAPIキーが見えるでしょうか? DropboxはSSL上のすべてを行います。 GET変数やPOST変数を使用するのか、単にHTTP要求のヘッダーに入れるのかはわかりません。これらのものはHTTPSリクエストで暗号化されているのですか? – espekia

答えて

2

プレーンテキスト。コードが配布されると、難読化の試みは無駄です。

2

あなたのケースでこれが可能かどうかわかりません。しかし、ホストするプロキシ経由でAPIにアクセスできます。

Python APPからのリクエストがプロキシに送られ、プロキシがDropbox APIにリクエストを行い、応答をPythonアプリケーションに返します。この方法であなたのapiキーは、あなたがホスティングしているプロキシになります。プロキシへのアクセスは、任意の手段で制御できます。 (例えば、ユーザー名とパスワードについて)

+0

一般的には良い解決策ですが、自分のサーバーをホストするリソースや傾きがないため、私の場合Dropboxを特に使いたいと思っていました。 – espekia

1

はあなたのシナリオに応じて、2つの方法があります

あなたは、エンドユーザー向けのWebアプリケーションを開発するだけであなたのAPIキーが開示に来ていない方法でそれをホストしている場合。したがって、別のファイルに保管しておき、サーバーにアップロードするだけで問題ありません(サーバーに違反がない限り)。すべての難読化は実用的な利点を追加しません、それはちょうどセキュリティの誤った感じを与えるでしょう。

開発者向けのフレームワーク/ライブラリやエンドユーザー向けのクライアントアプリケーションを開発する場合は、APIキーを独自に生成するように依頼してください。

関連する問題