49

ペットプロジェクトの場合、いくつかの異なるWebサービスからのAPIキーを必要とするデスクトップアプリケーションを開発します。

私はこのアプリケーションを調べて準備し、オープンソースになり、これらのキーをどう処理するかという問題に遭遇しました。

問題はこれです:私の理解では、これらのAPIキーは、アプリケーションを使用している人やソースコードを表示/変更している人には見えないはずです。Webサービスの側から、これらのAPIキーは、APIにアクセスするアプリケーションを識別し、必要に応じて使用を許可/ブロックするために使用されます。これらのキーを受け取るためのほとんどのTOSでは、実際には、キーを世界と共有してはならないことが明示的に示されています。

現在、私のすべてのキーはハードコーディングされていますが、オープンソースアプリケーションで秘密キーの状況を処理する方法について行き詰まっています。

-キーがハードコーディングされたままの場合、ソースコードが公開されるとすぐに公開されます。

-コード配布からキーを含むソースファイルを実際に省略することはできません。それ以降、コンパイルされないためです。これは技術的に問題を解決しますが、新しい、受け入れられない問題をもたらします。

-キーを.iniまたは他の構成ファイルにプッシュし、そのファイルをパブリックコードリポジトリに含めない場合でも、アプリが機能するためには、アプリケーションのバイナリとともに配布する必要があります。私のキーは、ソースディストリビューションではなくアプリケーションディストリビューションに表示されます。改善ではありません。このINIファイルで利用しようとした暗号化体操は、コードを変更しようとする人にとっては複雑さを増すことになります。

それで、私のコードベース(現在バージョン管理のためにMercurialの下にあります)に関して、コードを公開できるようにすべてを管理するための最良の方法は何ですか?しかし私のキーは非公開のままですか?

4

2 に答える 2

19

使用している言語はわかりませんが、たとえばC / C ++では、APIキーを含むインクルードファイルを追加し、それをソース管理から除外します。代わりに、明示的に偽のAPIキーを含む偽のファイルを追加します。ほとんどの言語には、ファイルを含めるためのいずれかの方法があります。

于 2009-12-31T05:04:36.523 に答える
8

アプリは構成ファイルを使用する必要があります。この構成ファイルは実行時にロードされ、コンパイルには影響しません。を使用すると、ユーザーはバイナリをダウンロードしても、独自のAPIキーを使用できます。

Kornelが言うように、ソース管理に偽のAPIキーを含むサンプル構成ファイルを含めることができます。

別のオプションとして、Webサービスを実行している人々と話し、2つのことのいずれかを求めることができます。

  1. 限られた機能でのみ機能する一時的なキー。これにより、ユーザーはアプリの基本的な機能を確認できますが、キーを更新せずに基本的なものだけを使用する人もいます。

  2. Webサービスに問い合わせて、アプリケーション用の特別なAPIキーが提供されるかどうかを確認してください。オープンソースバージョンでは、ユーザーが自分で入力する必要があります。ただし、バイナリは標準のものを使用できます。

APIキーの構成を使用するという考えは、新しいものでも前代未聞のものでもありません。Bit.lyサービスがそれを行います。そして、Bit.lyでの使用を提供するすべてのオープンソースアプリケーションは、使用する前にユーザー名とAPIキーを要求します。

これも違いはありませんか?

于 2009-12-31T05:15:23.830 に答える