免責事項 - ご自身で調査を行ってください (おそらく、さらに 2、3 の回答をお待ちください)。私はセキュリティの専門家ではありません。
これをオープン API にする計画
正直なところ、ものを保護するのは非常に困難です。最善を尽くすことはできますが、実際には、JavaScriptを介して誰でもAPIにアクセスできるようにすることについて話しているため、完全に保護する可能性はあまりありません. この API を作成する際のすべての決定は、誰でもアクセスできるという考えに基づいている必要があります。実際の認証スキーム (カスタムのものではないなど) を実装しない限り、プライベート データを送信しないでください。
データがそれほど重要でない場合は、十分に保護されていなくても問題ありません。
これに取り組む次の人は、機能を実現する最も簡単な方法を見つけるかもしれません.多くのセキュリティの脆弱性は、元の計画を完全に理解していないときにシステムを更新することで発生します.
トークンベースの認証
API の使用が許可されている各サイトは、一意の ID (GUID) を元のサイト、クライアント IP、および有効期限と共にデータベースに挿入します。ページのライフサイクルによっては、これはおそらくかなり早く期限切れになる可能性がありますが、より多くの費用がかかります。
JavaScriptがAPIにアクセスすると、このトークンが渡され、APIはデータベース内のトークンとIPを単純にチェックし、有効期限が切れていないことを確認します。
ASP.NET のような暗号化された Cookie を潜在的に使用して、何らかの標準形式の認証を使用できればさらに良いでしょう。ただし、クロスドメインの場合、これが可能だとは思いません。
IP をチェックすることは、別のサイトがユーザーに API の使用を許可しようとする中間者攻撃を防ぐのに役立ちます。
API のレートを制限して、他のサイトが API を使用してユーザーに情報を提供するのを防ぐことができます。これは、トークンを発行する頻度と、各トークンが実行できるリクエストの数を制限するだけで実現できます。
CORS
http://en.wikipedia.org/wiki/Cross-origin_resource_sharing
クロスドメイン ajax 呼び出しを使用している可能性があるため、おそらく CORS と呼ばれるものを調べる必要があります。これにより、互換性のあるブラウザがクロス ドメイン リクエストを作成できるようになります。これをサポートしていないブラウザでは、おそらく jsonp にフォールバックする必要があります。これは、クロスサイト スクリプティング攻撃をサポートするブラウザーでのクロスサイト スクリプティング攻撃の排除にも役立つはずです。私の知る限り、これはサーバー テクノロジではなく (http ヘッダーを除いて) ブラウザ テクノロジであるため、このルールで適切に動作しないクライアントを防ぐことはできませんが、ユーザーを保護するのに役立ちます。
CSRFに対する保護
https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF )
データの更新を許可する場合は、クロスサイト リクエストの偽造防止メカニズムの使用を検討することを強くお勧めします。おそらく、MVC のようなトークンが提供され、(API から) Cookie に一意の値を指定し、API への投稿で値を返す必要があります。サーバーとクライアントの両方に実装するのは非常に簡単で、サーバーはこれを行うためにセッションに何かを保存する必要はありません。つまり、Cookie が生きている限り機能します。これにより、悪意のある第三者が他の誰かに API へのリクエストを実行させることが非常に困難になります。ajax の代わりにフォームを使用してポストバックを行っている場合は、トークンがポストバック値に追加されていることを確認する必要があります。これは認証方法ではなく、CSRF を防ぐためのものであることを忘れないでください。
これを認証トークンと組み合わせることができるかもしれませんが、Cookie の送信に依存しているため、これはおそらく不可能です。
DOS攻撃
また、大量の CPU 時間を使用する DOS 攻撃を阻止するために、API メソッドが高価でないことを確認してください。もちろん、誰かがあなたのサイトを本当に削除したいのであれば、おそらくまだ削除できるでしょう。あなたの仕事は、彼らの手段を制限することです.