gpt4 book ai didi

asp.net-mvc - .NET MVC 防止伪造 POST

转载 作者:行者123 更新时间:2023-12-01 10:53:10 27 4
gpt4 key购买 nike

情况:

我有一个模型,基于用户角色,我希望允许用户仅更新模型的某些部分。假设模型具有三个字段。 (我的模型明显比这个复杂)

MyObject
Field1
Field2
Field3

我的 View 看起来像这样:

Html.TextBoxFor(@Model.Field1)
Html.TextBoxFor(@Model.Field2)
@if(UserIsAdmin())
Html.TextBoxFor(@Model.Field3)
else
@Model.Field3

在语法方面(以及示例的糟糕设计),您可以看到我正在尝试做什么。在用户发布表单后,我的 Controller 将只获取 MyObject 并将其保存回数据库,我们使用的是 EF。

问题:

我的问题是,有没有办法阻止用户伪造 POST 以保存他/她不应该保存的数据。我目前的想法是在 Controller 中进行检查,看看用户是否修改了他不应该修改的值。或者我可以单独保存字段,但这都不是一个方便的解决方案。

还有更好的吗?

谢谢!

附加信息:

不确定这篇文章是否相关:http://blog.stevensanderson.com/2008/09/01/prevent-cross-site-request-forgery-csrf-using-aspnet-mvcs-antiforgerytoken-helper/

所有三个字段都来自同一个数据库表,我正在使用 EF 来获取和保存实体。

最佳答案

您要确保用户只能更新允许的字段。

您决定实现此目的的方法是防止用户“伪造”响应,例如使用firebug,或 F12 开发人员工具,或 GreaseMonkey,并询问如何执行此操作。

但正确/最好的方法是检查用户试图更新哪些字段,并且只更新允许他更新的字段。那么无论他们是否伪造请求都没有关系,他们仍然无法访问任何他们不应该访问的内容。换句话说,在访问点检查访问权限。

防伪 token 用于解决一个单独的问题,即 XSRF。

关于asp.net-mvc - .NET MVC 防止伪造 POST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16917791/

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