在ASP.Net MVC中删除记录的安全方法

时间:2018-08-29 19:43:08

标签: c# asp.net-mvc asp.net-mvc-5 antiforgerytoken

我想从ASP.Net MVC 5网站上删除产品。我想知道添加var name = from nm in xelement.Elements("Version") where (string)nm.Element("Trunk") == ComboBox1.Text select nm; [AntiForgeryToken]是否足以确保删除操作的安全?

查看

[Authorize]

控制器

 <p>Delete: @Model.Name</p>
 @using (Html.BeginForm("Delete", "ProductController", FormMethod.Post, new { ProductId = Model.ProductId }))
 {
    @Html.AntiForgeryToken()
    <button type="submit">Delete</button>
 }

场景:一名黑客在我的网站上注册并创建了一个有效帐户。现在,黑客查看了自己的产品,显然他拥有一个AntiForgeryToken。他现在可以只在浏览器中更改ProductId并发布删除他人产品的请求吗?

1 个答案:

答案 0 :(得分:3)

简短回答。这还不够。

反伪造令牌只是说发出原始页面请求的人就是进行更新的人。

基本授权属性仅验证用户已登录。

您正在寻找的是数据安全性。在微软自己的网站上有example

您在上一段中所说的,黑客可以注册一个帐户来创建自己的产品列表,并根据您在url中显示的内容猜测其他合法记录也可以编辑

说您有一个网址

https://example.com/product/edit/13

阻止用户/黑客猜测

的原因

https://example.com/product/edit/12 要么 https://example.com/product/edit/14

如果在数据级别没有表明用户可以访问或不能访问/更新的记录的安全性,则会遇到恶意用户可以查看或编辑各种信息的情况。

这是FISERV发现公开其他客户信息的确切情况

文章

  

Hermansen已注册,可以在每次新交易时获取电子邮件警报   发布到他的帐户,他注意到该站点为他的警报分配了一个   特定的“事件编号”。直觉地认为这些事件编号   可能会顺序分配,而其他记录可能是   如果直接请求,则可用,Hermansen请求相同的页面   再次但首先在他的浏览器中编辑了网站的代码,以便他   事件编号减少了一位。