gpt4 book ai didi

asp.net-mvc - MVC 4 Razor 失去 Unbound 的用户

转载 作者:行者123 更新时间:2023-12-04 05:29:09 29 4
gpt4 key购买 nike

我目前正在 MVC4 中创建一些用户配置文件编辑表单,并且为了测试,我将 UserId 属性呈现为表单上的只读文本框,如下所示:

<li>
@Html.LabelFor(model => model.UserId)
@Html.TextBoxFor(model => model.UserId, new { @readonly="readonly"})
</li>

当我接近完成编辑表单时,我删除了这个文本框,因为它只是用完房地产。完成此操作后,保存时发送回 Controller 的模型具有整数默认值 0,然后 Entity Framework 因无法更新任何行而崩溃。所以我在表格中添加了这个:
<li>
@Html.HiddenFor(model => model.UserId, new { @readonly="readonly"})
</li>

这是一个安全的举动吗?我应该将 ViewBag 用于这样的事情吗?在个人资料详细信息页面上,我呈现了一个编辑按钮,如下所示:
@Html.ActionLink("Edit", "Edit", new { id=Model.UserId })

这意味着 UserId 在链接中呈现。这是安全可靠的还是我需要重新考虑如何在 UI 中移动模型和 ID?

TIA,

最佳答案

Is this a safe move?



这将完成将 id 发送到服务器的工作。只需摆脱 readonly="readonly"属性对隐藏的输入意义不大。

Should I be using the ViewBag for things like this?



这在安全性方面没有任何改变。任何用户仍然可以输入他想要的任何 id。无论您使用隐藏字段还是 ActionLink,您仍然将 id 作为纯文本发送到服务器,任何人都可以伪造请求并输入他想要的任何 id。因此,如果您的站点使用某种形式的身份验证,则在尝试对其执行任何操作之前,您必须在服务器端绝对检查您实际收到的 id 是属于当前经过身份验证的用户的资源。否则,一些经过身份验证的用户可以提供属于另一个用户的资源的 id 并能够更新它。当然这只是一个假设的场景,完全不清楚这是否是你的情况以及这是否 id需要得到保护。

关于asp.net-mvc - MVC 4 Razor 失去 Unbound 的用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12837733/

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