【发布时间】:2012-01-21 01:38:27
【问题描述】:
快速提问;
给控制器 User 和 and 函数 Get 有人可以调用;
mydomain.com/user/get 并访问那里的功能。
只有我的应用程序才能调用它的最佳做法是什么?
谢谢
【问题讨论】:
标签: asp.net-mvc asp.net-mvc-3 model-view-controller
快速提问;
给控制器 User 和 and 函数 Get 有人可以调用;
mydomain.com/user/get 并访问那里的功能。
只有我的应用程序才能调用它的最佳做法是什么?
谢谢
【问题讨论】:
标签: asp.net-mvc asp.net-mvc-3 model-view-controller
使用 [ChildActionOnly] 属性装饰动作方法将确保控制器上的动作方法不能被用户输入 URL 直接调用。 EG
[ChildActionOnly]
public ActionResult _CantNavigateHere()
{
return View();
}
【讨论】:
您可以将 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) {..}
除此之外,您还可以检查引用主机并拒绝任何与您的域不匹配的主机。这可以被欺骗,但同样,这只是要添加的另一层。
【讨论】: