2012-02-13 21 views
0

私のウェブサイトにログインする必要はありません。また、ASP.NET MVCコントローラのアクションメソッドの呼び出しでユーザーが終了するアクション。この時点で他の企業がこれらのエンドポイントを呼び出すことができ、この方法でAPIを使用することができます。自分のサイトにいるユーザーだけがこれらのAPIにアクセスできるようにしたいと思います。私のサイトにアクセスしているユーザーをapiエンドポイントに制限する方法

どのように達成できますか?明確化を追加する

は、私のサイトはconsoto.comであると言います。エンドユーザーがconsoto.comにいる場合にのみ、私のメソッドが機能するようにしたい。今、別の会社やハッカーがhackland.comというサイトを構築し、javascriptが自分のメソッドを呼び出すと、そのユーザーはconsoto.comにはなくhackLand.com上にあるので、失敗するようにしたい。

最近では、多くのサイトでコアAPIの公式APIへのアクセスが提供されています。このような仕組みを実装していない場合は、有料APIを経由せずに実際のサイトが使用するメソッドを呼び出すオプションもあります。 hackland.comがconsoto.comで使用されている方法を使用してサービスを払っていないのを防ぐには?

+0

「他の会社」とは何を意味していますか?しかし、あなたはあなたのサイトのCookieやセッションを設定し、あなたのサイトには、あなたは取引が行わ持っているセッションを与えることができる唯一の場所であるとして、クッキーやセッションを確認し、しかし、私はあなたのウェブサイトは、単に企業 – davethecoder

+0

あなたの場合に限られていると思ういけない可能性がありクライアントがログインする必要がない(または何らかの方法で認証される(つまり、秘密トークン、認証クッキーなど))、最初に "自分のサイトにいるユーザ"と "他の企業"をどのように区別することができますか? –

+0

@ minus4は私がちょうど良く説明を追加しました。ありがとう! – Barka

答えて

0

私はあなたを理解しているとは確信していませんが、あなたのウェブサイト上のアクティブなユーザーに特定のアクション方法を呼び出すことができるように思えます。その場合、[ChildActionOnly]でアクションメソッドを飾ることができます。これにより、ASPはビューコード内でHTML.Action()で呼び出されるアクションのみを許可します。

コントローラコード

[ChildActionOnly] 
public ActionResult someAction() 
{ 
    //return whatever you need 
} 

サーバー上のアクションを呼び出すから積極的にサイトが表示されていない人々を防ぐ必要があるビューコード

Html.Action("someAction") 

0

サイトで認証を必要としない場合は、認証されたユーザーだけがサーバー側の操作を呼び出すことができます。

+0

おかげにデータを提供しません!これはよくある問題です。スタックのオーバーフローを見てください。 (またはその点でGoogle自身)。彼らはログインする必要はありません。だから私は基本的に彼らのコントローラメソッドとwalaを呼び出すサイトを構築することができます、私は自分のサイト上で多くの機能を持っています。 1時間に特定のIPアドレスからのヒット数を制限するだけですか? – Barka

0

これを実行する方法の1つは、クライアントがコントローラに供給しなければならない何らかの時間に敏感なトークンを使用することです。

  1. は、ユーザからのいくつかの資格情報を取得し、資格情報が有効な場合、サーバーのクロックに基づいてハッシュされた時間に敏感なトークンを返すWebサービスを実装します。資格情報が通過中に保護されるように、このサービスをSSL経由で呼び出す必要があります。

  2. それぞれの保護されたコントローラは、現在期待される他の入力に加えて、このトークンを期待します。その後、トークンをデハッシュしてトークンを検証し、その中に格納された時間を取得します。ここで、トークンを有効にする期間を決定し、受け入れる時間間隔を選択することができます。デハッシュプロパティを持たないトークンまたは期限切れになっているトークンについては、何らかのエラー結果を返します。有効なトークンについては、正しい結果を返します。トークンが時間に敏感であるのではなく、使用数のシナリオを実装することもできますが、時間の影響を受けやすい方法は簡単です。

このように、APIコントローラはログインやSSLを必要としません。あなたの有効なユーザーは、手元にあるトークンを入手してからサービスを呼び出す必要があります。誰もがこれらのトークンを傍受することができますが、おそらく非常に短期間後にはうまくいかないでしょう。

関連する問題