快速提问;
给予控制器用户和和功能让某人可以打电话;
mydomain.com/user/get并访问那里的功能。
只允许我的应用程序调用它的最佳做法是什么?
由于
答案 0 :(得分:3)
使用[ChildActionOnly]属性修饰Action方法将确保输入URL的用户无法直接调用控制器上的Action Method。 EG
[ChildActionOnly]
public ActionResult _CantNavigateHere()
{
return View();
}
答案 1 :(得分:0)
您可以将AntiForgeryToken与MVC3和Ajax一起使用。
我就是这样做的。 (当然,这不是万无一失,但增加了另一层安全性)
在您的视图,任何地方,输出:
@Html.AntiForgeryToken()
在你的Ajax调用中,在post变量中包含这个值,如:
$.post("/Controller/Action/",
{ 'id': var_id, '__RequestVerificationToken': $("input[name='__RequestVerificationToken']").val() },
function (data) { /* handle request */ });
在你的控制器中:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Action(int id) {..}
除此之外,您还可以检查引荐主机并拒绝任何与您的域不匹配的主机。这可能是欺骗性的,但同样,只是要添加的另一层。