1

質問

信頼できるドメインのみを許可して API を保護するにはどうすればよいですか?

詳細

REST API を構築しています。API キーを配布する方法が必要ですが、登録されているドメインからのみ動作できるようにします。

主な問題は、API キーを盗むために簡単に逆コンパイルできる Flash ファイルに API キーを埋め込む必要があることです。Flash でこれが不可能な場合は、代わりに Javascript を使用できます。

多くの人が を使うと言っているのを聞いたことがあります$_SERVER['HTTP_REFERER']。しかし、それは簡単に偽装されます。

  • 許可されたドメインからのリクエストであることを確認する API を構築するにはどうすればよいですか?
  • ドメインに関連付けられた API キーを作成するにはどうすればよいですか?
  • 信頼できるドメインのみを許可して API を保護するにはどうすればよいですか?

関連する Stackoverflow の質問:

これらの質問は関連していますが、私の質問には完全には答えていません。将来の参考のためにここに置いておくことにしました。

4

1 に答える 1

0

ここでは JavaScript は役に立ちません。問題は、キーがクライアントに保存されていることです。つまり、キーは安全ではありません。確かに攻撃者にとって少し難しくすることはできますが(たとえば、リファラーをチェックすると言うように)、結局のところ、サーバーが検証できるのはキーが正しいことだけであり、キーは簡単に盗まれる可能性があるため、あまり役に立ちません。

これを保護する方法は、クライアントではなく、秘密鍵を提供する相手のサーバーで秘密鍵を実行することです。ニーズによっては、これが実現できない場合があります。

攻撃者にとって少し難しくする方法の 1 つは、サイト ロック技術を使用して、SWF が適切なドメインにある場合にのみ API を呼び出すことを許可することです。例については、 http://blog.boogatech.com/as3_tutorial_site-locking_your_flash_project/を参照してください。ただし、これはクライアントのセキュリティであることに注意してください。通常、サイトロックの目的は、他のサイトでユーザーがゲームをプレイするのを阻止することです (それでも、最も献身的な攻撃者を阻止することはできません)。あなたの場合、サーバーセキュリティを扱っています-サーバーはSWFについて知りません。サーバーが知っているのは、供給されている引数だけなので、攻撃者はSWFとクライアントセキュリティをバイパスして、別の場所からAPIを呼び出すことができます.

防ごうとしている攻撃と攻撃者について考えることをお勧めします (なぜ API キーをドメインに関連付ける必要があるのでしょうか?)。これは、セキュリティの試みをより適切に計画するのに役立ちます。たとえば、非常に重要な API を実行していない場合、攻撃者が API にアクセスするのをより困難にするためにいくつかのものを配置することは許容できると判断できます。 .

于 2012-07-27T20:52:56.190 に答える