2017-03-02 15 views
0

で検索しました。Microsoft Azure abc.comにREST APIをホストしました.HTMLベースのページであるxyz.comからの呼び出しのみを受け取りたいと思っていました。REST APIによって要求されたホストをC#

xyz.com、またはhtmlベースのコンシューマー用の残りのAPIを保護するための他の簡単な方法によってRESTリクエストが送信されたことを確認する方法はありますか?最も簡単な方法は、この問題で説明するように、あなたが受けているHTTPリクエストを検査し、Refererヘッダを検査することであるMVC、ASP.NET

答えて

0

を使用して

How do I get the referrer URL in an ASP.NET MVC action?

問題誰かがそれを迂回すると判断された場合、Refererヘッダーが偽装される可能性があるため、100%安全ではありません。

異なるアプローチは、xyz.comにマップされたIPに対してのみ着信要求をブロックするIPベースのフィルタを追加することですが、これはあなたのサイトをどのようにホスティングしているかによって異なります - 紺碧のウェブサイトやホストされたウェブサイトなど。

+0

ありがとう。私は試してみます。そのAzureベースのウェブサイト。私は、クライアント/秘密鍵とトークンを提供することができますが、見つけることができなかったPublicまたはOpen datapowerウェブサイトを試しました。あなたはエンタープライズではなく公衆のために利用可能なサービスを知ったことがありますか? –

1

バックエンドがC#に関係なく、アクセス制御許可の原点 HTTPヘッダーを使用して、xyz.comを許可された参照元として指定することができます。

Access Control-Allow-Originがワイルドカード以外の場合は、Vary:Originヘッダーを指定する必要があります。このは、この中でさまざまなシナリオでどのように機能するかあなたはこのヘッダについての詳細を学ぶことができ

SO答える「[s]は、サーバーの応答は原点リクエストヘッダの値に基づいて異なりますクライアントに示す」:https://stackoverflow.com/a/10636765/1449160

も参照してください:CORSがクライアント実装機能であるようhttps://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Origin

これは、しかし、十分なセキュリティではありません。おそらく、C#バックエンドが参照元をアクセスコントロールの一部としてチェックすることを望みます。最後に、不正アクセスからあなたのAPIを保護する限り、ここでいくつかの段落の範囲を超えてこれを行う方法はたくさんあります。 OAuthはおそらく最も有名ですが、あなたのクライアント用の一意のトークンを生成し、それをヘッダーに含めることもできますし、HTTP基本認証をトークンと共にユーザー名またはパスワードなどとして使用することもできます。

+0

@Avner Shahar-Kashtanが言及するように、参照元URIも偽装される可能性があるので、それでも十分なセキュリティではありません。 APIを保護するには、おそらくCORSヘッダー、バックエンドリファラーチェック、およびある種の認証トークンが必要です。 –

+0

サムに感謝!私は試してみます。更新します。 –

関連する問題