4

JSON サービス呼び出しで HTML ページを作成するコードがあるとします。

他のユーザーがソース コードをコピーして貼り付けたり、サービスを呼び出したり、最初のユーザーの結果セットを取得したりできないようにするにはどうすればよいですか?

サービスのパラメーターとしてドメインを取得した場合、またはユーザー名やパスワードなどを取得した場合、それらをコピーして貼り付けて別のドメインに使用することもできます。

これを防ぐ方法がわかりませんか、それとも間違っていますか?

4

1 に答える 1

5

これを完全に防ぐ方法がないことは間違いありませんが、より困難にすることができ、API を悪用しているユーザーやハッキングされたユーザーを特定できるようにすることができます。

これを行う方法は、証明書 (非対称暗号化) を使用することです。各クライアントには、そのクライアントに完全に固有の秘密鍵と公開鍵があります。公開鍵は、公開された知識です (通常、サーバーまたは Comodo や Verisign などのサードパーティ データベースに保存されます)。秘密鍵は、クライアントに対して非公開です。サーバーには秘密鍵/公開鍵もあります。

クライアントがリクエストを行うたびに、リクエストはサーバーの公開鍵で暗号化され、クライアントの秘密鍵で署名 (暗号化) されます。サーバーの鍵は、サーバーのみが要求を復号化できることを保証し、クライアントの鍵は、クライアントの公開鍵を使用して完全に元に戻すことができるように、クライアントのみがその要求を暗号化できたことを保証します。

これは、悪意のあるユーザーが自分の名前でのみリクエストを行うことができることを意味するため、誰が不正行為を行っているか、または侵害されたユーザーがわかるので、そのユーザーに通知してアカウントを無効にすることができます。これにより、他のユーザーがネットワーク上でスニッフィングし、リプレイ攻撃を実行する別のユーザーの要求を復元することも防止されます。

安全な Cookie を使用してユーザー要求を追跡するなど、これを実装する方法は他にもあります。安全な Cookie の実装に関する役立つ質問へのリンクをいくつか掲載します。これらのいくつかは他のプラットフォーム用ですが、概念は同じです。

これは多くのことを理解する必要があります。おそらく、実装を開始する前に、もう少し読みたいと思うでしょう。

その他の役立つ質問:

  1. REST Web サービス認証トークンの実装
  2. iPhone アプリケーションで REST API を使用する場合のセキュリティ
  3. https://stackoverflow.com/questions/15390354/api-key-alternative/15390892#15390892リンク切れ。
于 2013-04-15T22:01:58.540 に答える