gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 15:53:35 25 4
gpt4 key购买 nike

我想从我的 ASP.Net MVC 5 网站中删除一个产品。我想知道添加 [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>
}

Controller

[HttpPost]
[Authorize]
[ValidateAntiForgeryToken]
public ActionResult Delete(long ProductId)
{
/* Do I need to check if the logged in User has permission to delete the product?
var product = ProductRepository.Get(Id);
if (product.Creator == User.Identity.GetUserId<long>())
{
ProductRepository.Delete(ProductId);
}
*/

// or, can I avoid the trip to DB and just delete the record?
ProductRepository.Delete(ProductId);
}

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

最佳答案

简答。这还不够。

防伪 token 只是表示发出原始页面请求的人就是进行更新的人。

基本授权属性只是验证用户是否已登录。

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

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

假设你有一个 url

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

是什么阻止了用户/黑客猜测

https://example.com/product/edit/12或者 https://example.com/product/edit/14

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

这正是FISERV发现暴露其他客户端信息

来自文章

Hermansen had signed up to get email alerts any time a new transaction posted to his account, and he noticed the site assigned his alert a specific “event number.” Working on a hunch that these event numbers might be assigned sequentially and that other records might be available if requested directly, Hermansen requested the same page again but first edited the site’s code in his browser so that his event number was decremented by one digit.

关于c# - 在 ASP.Net MVC 中删除记录的安全方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52085019/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com