2

我的控制器中有一个执行删除操作的操作方法:

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 中注册控制器操作:

routes.MapRoute(
   "Delete",
   "MyController/Delete/{id}",
   new { controller = "MyController", action = "Delete" }
);       

但我意识到这是危险的,因为每个人都可以直接从浏览器调用此操作并更改 id 以删除不同的元素:

myDomain.com/MyController/Delete/20

如何避免这种潜在的安全问题?

4

2 回答 2

1

一种选择是在删除函数之上使用 [HttpPost] 属性。这样,只有当您加载的页面发布该数据并直接点击该网址不起作用时,它才会起作用。

您还可以在页面上放置一些内容,以便只有来自同一页面的帖子才有效。一些属性。让我回复你。

于 2012-07-20T13:30:38.780 回答
1

您基本上可以使用 AcceptVerbs 属性装饰您的 Delete 操作方法。您可以阅读这篇文章以获得更多详细信息。

于 2012-07-20T13:35:21.607 回答