asp.net-mvc - ASP.NET MVC 如何避免直接调用 URL

标签 asp.net-mvc asp.net-mvc-routing

我的 Controller 中有一个执行删除操作的操作方法:

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 操作:

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

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

myDomain.com/MyController/Delete/20

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

最佳答案

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

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

关于asp.net-mvc - ASP.NET MVC 如何避免直接调用 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11580175/

相关文章:

mysql - Asp.Net MVC - MySQL - 保存 Č 转换为 C,为什么?

c# - 我如何按创建日期列出文件

c# - 自定义路由上未调用 GetVirtualPath

c# - 数据库未创建和初始化

asp.net-mvc - 缺少 Microsoft.Data.Tools.Schema.Sql.UnitTesting。再次

c# - 如何调用返回带空格的列的存储过程

asp.net-mvc - 带有 ASP.NET 的动态 'twitter style' url

asp.net-mvc - ASP.Net MVC 路由操作名称冲突

c# - 允许使用 ASP.NET MVC 路由的字符串 ID

c# - 每种角色类型的不同默认页面/ Controller - MVC 5