116

そのため、Google API、Twitter API、Facebook API など、さまざまなサービスが数多くあります。

各サービスには、次のような API キーがあります。

AIzaSyClzfrOzB818x55FASHvX4JuGQciR9lv7q

すべてのキーの長さと含まれる文字が異なります。API キーを生成するための最良の方法は何ですか?

私は特定の言語を求めているのではなく、キーを作成するための一般的なアプローチを求めているだけです.ユーザーアプリの詳細の暗号化、ハッシュ、またはランダム文字列のハッシュなどである必要があります.ハッシュアルゴリズムについて心配する必要があります. (MSD、SHA1、bcrypt) など?

編集: 私は何人かの友人 (電子メール/ツイッター) と話しましたが、彼らはダッシュを取り除いた GUID を使用することを勧めました。

ただし、これは少しハックに思えますが、さらにアイデアが得られることを望んでいます。

4

6 に答える 6

72

暗号化用に設計された乱数ジェネレーターを使用します。次に、base-64 で数値をエンコードします。

これは C# の例です。

var key = new byte[32];
using (var generator = RandomNumberGenerator.Create())
    generator.GetBytes(key);
string apiKey = Convert.ToBase64String(key);
于 2013-09-11T00:30:35.937 に答える
34

API キーには、次のプロパティが必要です。

  • 許可された API ユーザーを一意に識別します -- 「API キー」の「キー」部分
  • そのユーザーを認証します -- 推測/偽造できません
  • ユーザーが不正行為を行った場合は取り消すことができます。通常、ユーザーはレコードを削除できるデータベースにキーを入力します。

通常、数十億ではなく数千または数百万の API キーがあるため、次のことを行う必要はありません。

  • データベースに保存できるため、API ユーザーに関する情報を確実に保存します。

そのため、API キーを生成する 1 つの方法は、次の 2 つの情報を取得することです。

  1. 一意性を保証するシリアル番号
  2. キーをパディングするのに十分なランダム ビット

プライベートシークレットを使用して署名します。

カウンターはユーザーを一意に識別することを保証し、署名は偽造を防ぎます。取り消し可能性では、API キーの承認が必要な処理を行う前に、キーがデータベースで有効であることを確認する必要があります。

優れた GUID ジェネレーターは、複数のデータ センターからキーを生成する必要がある場合、またはシリアル番号を割り当てるための適切な分散方法がない場合、インクリメントされたカウンターのかなり良い近似値です。


またはランダムな文字列のハッシュ

ハッシングは偽造を防げません。 署名は、鍵があなたからのものであることを保証するものです。

于 2014-06-23T14:02:11.097 に答える
7

ダッシュなしで小文字でフォーマットされた UUID を使用します。

ほとんどの言語に組み込まれているため、生成は簡単です。

API キーは危険にさらされる可能性があります。その場合、ユーザーは API キーをキャンセルして新しい API キーを生成することを希望する可能性があるため、キー生成方法はこの要件を満たすことができる必要があります。

于 2013-01-20T08:55:02.290 に答える
1

API キーはランダムな値である必要があります。予測できないほどランダムです。対象のユーザーまたはアカウントの詳細を含めないでください。作成された ID がランダムであることが確実な場合は、UUID を使用することをお勧めします。

たとえば、以前のバージョンの Windows では予測可能な GUID が生成されていましたが、これは古い話です。

于 2013-01-20T09:26:41.153 に答える