Html 在asp.net mvc中使用链接调用删除方法
我知道使用http GET删除数据是一个安全漏洞。通常从链接中调用delete也是一个坏主意吗?我特别指的是asp.net mvc actionlink,它将http方法指定为POSTHtml 在asp.net mvc中使用链接调用删除方法,html,asp.net,entity-framework,security,asp.net-mvc-4,Html,Asp.net,Entity Framework,Security,Asp.net Mvc 4,我知道使用http GET删除数据是一个安全漏洞。通常从链接中调用delete也是一个坏主意吗?我特别指的是asp.net mvc actionlink,它将http方法指定为POST @Ajax.ActionLink("Delete", "DeleteNote", new { noteid = Model.noteid }, new AjaxOptions { Confirm = "Delete?", HttpMethod = "POST", OnSuccess = "
@Ajax.ActionLink("Delete",
"DeleteNote", new { noteid = Model.noteid },
new AjaxOptions
{
Confirm = "Delete?",
HttpMethod = "POST",
OnSuccess = "postmessage('note_Deleted_" + Model.noteid + "')"
})
我不知道我是否会将从GET请求中删除数据描述为一个必要的安全漏洞(前提是您的应用程序实现了适当的安全性),但正如您所知,这通常不是一个好主意
如果你有删除链接,你一定要把它们放在nofollow上,但我不认为删除数据的链接本质上是坏的。即使您的标记中没有链接,您仍然会通过表单提交或ajax向url发出http请求以删除某些内容。我不知道是否将从GET请求中删除数据描述为一个必要的安全漏洞(前提是您的应用程序实现了适当的安全性),但正如你所知,这通常不是一个好主意
如果你有删除链接,你一定要把它们放在nofollow上,但我不认为删除数据的链接本质上是坏的。即使您的标记中没有链接,您仍然会通过表单提交或ajax向url发出http请求以删除某些内容。使用http GET并不是一个安全漏洞,但对于RESTful API来说可能被认为是糟糕的设计。约定是使用HTTP DELETE删除资源。安全漏洞是如果您的API不支持任何身份验证/授权,无论是GET、DELETE、POST还是PUT。然后,任何拥有网络浏览器或Fiddler等工具的人都可以操纵他们本不应该访问的数据。看看这个 您仍然可以使用链接来调用API,但不要使用定义要删除的URL的href的直接链接。而是用一个id像这样定义你的锚
<a href="#" id="aDeleteNote">Delete</a>
如果您想使用Razor指定用于标识要删除的内容的noteid,那么可以将其放在DeleteNoteFunc有权访问的Javascript变量的隐藏字段中。使用HTTP GET并不是一个安全漏洞,但对于RESTful API来说可能被认为是糟糕的设计。约定是使用HTTP DELETE删除资源。安全漏洞是如果您的API不支持任何身份验证/授权,无论是GET、DELETE、POST还是PUT。然后,任何拥有网络浏览器或Fiddler等工具的人都可以操纵他们本不应该访问的数据。看看这个 您仍然可以使用链接来调用API,但不要使用定义要删除的URL的href的直接链接。而是用一个id像这样定义你的锚
<a href="#" id="aDeleteNote">Delete</a>
如果您想使用Razor指定用于标识要删除的内容的noteid,则可以将其放在DeleteNoteFunc有权访问的Javascript变量的隐藏字段中。这里提到的是一个名为的漏洞 下面是一个简单的例子
www.example.com/notes/delete/232
”
”X-request-With:XMLHttpRequest
”并在服务器方法中选中此项,这将有助于防止此攻击,因为此头无法添加到跨域请求中
如果您想进一步保护此安全性,则应实现,该功能将验证令牌作为POST请求的一部分,以确保请求来自您自己的站点。这里您提到的是一个名为的漏洞 下面是一个简单的例子
www.example.com/notes/delete/232
”
”X-request-With:XMLHttpRequest
”并在服务器方法中选中此项,这将有助于防止此攻击,因为此头无法添加到跨域请求中
如果您希望进一步保护此安全性,那么您应该实现,它将验证令牌作为POST请求的一部分,以确保请求来自您自己的站点