簡単な質問;コントローラへのASP.NET MVCコールのセキュリティ
コントローラのユーザとと関数getを呼び出すことができます。
mydomain.com/user/getとそこにある機能にアクセスしてください。
私のアプリケーションだけがそれを呼び出せるようにするベストプラクティスは何ですか? [ChildActionOnly]属性でアクションメソッドを飾る
おかげ
簡単な質問;コントローラへのASP.NET MVCコールのセキュリティ
コントローラのユーザとと関数getを呼び出すことができます。
mydomain.com/user/getとそこにある機能にアクセスしてください。
私のアプリケーションだけがそれを呼び出せるようにするベストプラクティスは何ですか? [ChildActionOnly]属性でアクションメソッドを飾る
おかげ
は、コントローラのアクションメソッドは、直接URLを入力するユーザーが起動することができないことを保証します。 EG
[ChildActionOnly]
public ActionResult _CantNavigateHere()
{
return View();
}
こんにちは柔道、それはコントローラからの呼び出しが行われた場合に機能します。私は$ .ajaxを使用してjQueryからいくつかのコントローラfuncitonalityを呼び出します。コントローラのアクションが提案されたように装飾されている場合、私は500エラーを返します。どうすればjqueryからこのアクションを呼び出すことができますか? – IGIT
ajaxのシナリオでは、[AjaxOnly]属性を実装する必要があります。http://helios.ca/2009/05/27/aspnet-mvc-action-filter-ajax-only-attribute/の簡単なデモがあります。 – Judo
しかしこれは誰でもajaxを使って呼び出すことができるということですか? – IGIT
MVC3とAjaxでAntiForgeryTokenを使用できます。
これは私がそれを行う方法です。
@Html.AntiForgeryToken()
そして、あなたのAjax呼び出しのようにポスト変数にこの値が含まれます:
、どこでも、あなたのビューに出力(これはもちろん、確実なものではなく、別のセキュリティレイヤを追加します)
$.post("/Controller/Action/",
{ 'id': var_id, '__RequestVerificationToken': $("input[name='__RequestVerificationToken']").val() },
function (data) { /* handle request */ });
そして、あなたのコントローラーで:この他に
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Action(int id) {..}
、あなたものチェックを行うことができますあなたのドメインと一致しないホストを拒否します。これはなりすましにすることもできますが、もう1つのレイヤーに追加するだけです。
あなたのアプリケーションは何ですか? – epignosisx