2

WCFWebサービスがあるとしましょう。そのリンクは次のとおりです。

http://www.example.com/service/?api=62383581

62383581はここのAPIキーです。APIキーを見つけるためにサービスがループスルーされないようにするにはどうすればよいですか?

4

4 に答える 4

3

サービスをパブリックに公開しようとすると、攻撃を受けやすくなるため、議論はそれを妨げるのではなく「どのように困難にするか」であるべきだと思います。

それを困難にする可能性は次のとおりです。

  • サービスへのアクセスを近い顧客に提供している場合は、サーバーに IP 制限を適用して、他のサービスからの呼び出しを防ぐことができます。これにより、クライアント側のスクリプト (JavaScript など) からの呼び出しがすべて防止され、 IPスプーフィング

  • サービスに IP 制限を設定することもできます。Message Inspector で IP を確認し、範囲内にない場合は例外をスローして、それ以上のアクセスを防ぐことができます。

  • 特殊文字を含む英数字 API キーを使用して、非常に複雑でループが困難になるようにします (ブルート フォース) (あなたのシナリオに最適だと思います)

  • クライアントに公開鍵 (クライアントごとに異なる) を与えることができます。たとえば、api&customerID などのキーに識別子を追加し、サーバー側ではその特定のクライアントの秘密鍵を持っているため、キーで暗号化するように依頼することができます。暗号解読のオーバーヘッドを含む)

中間に男性がいる場合、これは上記のすべてを妥協する可能性があります。これらはすべて物事を難しくするためのものであり、詳細なシナリオによっては再考が必要になる場合があります。

于 2011-06-21T09:42:57.340 に答える
2

Int の代わりに GUID を使用して、総当たり攻撃をより困難にします。

于 2011-06-22T06:23:30.617 に答える
0

攻撃者はなりすましを使用してそのような努力を捨てるので、発信者のIPアドレスをチェックし、同じIPアドレスが1時間にn回を超える呼び出しを行わないようにすることは無意味だと思います。

私が考えることができる唯一の方法は、そのような攻撃を検出できる強力な構成可能なファイアウォール、またはWinsnortなどの侵入防止システム(IPS)のいずれかを使用することです。http://www.winsnort.com/index.php?module=News&func=display&sid=41も参照してください。

于 2011-06-21T09:04:52.397 に答える
0

信頼されていないクライアント上のプログラムに含まれる API キーは、定義上漏洩する可能性があります。

于 2011-06-21T09:08:19.997 に答える