7

安全なRESTAPIを作成したい

たとえば、Google APIを見ると、APIKEYはドメインに基づいて生成されます。

これから私は2つの質問を得ました:

まず、それは一方向ハッシュを使用して正しい/正しいですか?はいの場合、誰かがハッシュメソッドとドメインを知っている場合、彼はAPIキーを生成してそれを使用できます。そして、私が使用できるハッシュメソッド/関数は何ですか?

2つ目は、クライアントがデスクトップアプリケーションを作成する場合、デスクトップからアクセスするAPI KEYを生成する方法です。これは、ドメインURLを持つWebサイトになりました。つまり、URLがないため、APIキーを生成できます。

安全なAPIを作成する方法とAPIキーを作成する方法はありますか?

ところで私はPHPを使用しています

4

4 に答える 4

3
  1. ドメイン+その他のロジックに基づくことができる追加のソルトと多くのハッシュメソッドを使用および混合することができます。 . また、UUID を生成して API キーとして使用することもできます (おそらく私はそれを使用します) 。たとえば、http://en.wikipedia.org/wiki/Uuidバージョン 4 では、実装の詳細を確認したり、考えたりすることもできます。簡単にいくつかの改善。

  2. あなたがそこで何を意味するのかよくわかりません。

于 2011-10-20T11:10:12.857 に答える
1

API キーとそれを使用するクライアントを格納するデータベース テーブルがある場合は、すべてのクライアントに対して一意のキーを作成します。文字を簡単にランダム化し、必要に応じてそれらをハッシュし、それをキーとして保存できます。

例えば。

$length = 16; // 16 Chars long
$key = "";
for ($i=1;$i<=$length;$i++) {
  // Alphabetical range
  $alph_from = 65;
  $alph_to = 90;

  // Numeric
  $num_from = 48;
  $num_to = 57;

  // Add a random num/alpha character
  $chr = rand(0,1)?(chr(rand($alph_from,$alph_to))):(chr(rand($num_from,$num_to)));
  if (rand(0,1)) $chr = strtolower($chr);
  $key.=$chr;
  }

これをハッシュしたい場合は、MD5 または SHA1 を使用できますが、データベースで逆比較する必要があります。

SELECT * FROM api_keys where MD5(key) = INPUT

これが役立つことを願っています

于 2011-10-20T08:50:29.413 に答える