我的控制器中有一个执行删除操作的操作方法:
private ActionResult Delete(int id)
{
if (delete(id))
{
return Content("success");
}
else
{
return Content("something went wrong!");
}
}
我用jQuery ajax以这种方式从我的视图中调用它:
jQuery('#NotificationArea').load('/MyController/Delete/5');
为此,我需要在global.asax中注册controller-action:
routes.MapRoute(
"Delete",
"MyController/Delete/{id}",
new { controller = "MyController", action = "Delete" }
);
但我已经意识到这很危险,因为每个人都可以直接从浏览器调用此操作并更改id以删除其他元素:
myDomain.com/MyController/Delete/20
如何避免这种潜在的安全问题?
答案 0 :(得分:1)
一个选项是在删除功能的顶部使用[HttpPost]属性。这样,只有当您加载的页面发布数据并直接点击该URL时,它才会起作用。
您还可以在页面上放置一些内容,以便只有来自同一页面的帖子才有效。一些属性。让我回答你。
答案 1 :(得分:1)
您实际上可以使用AcceptVerbs属性修饰Delete操作方法。您可以阅读此article了解详细信息。