.net 是否检测到隐藏的表单字段已更改?
我使用一个隐藏的表单字段来存储用户正在编辑的当前记录。如何防止用户更改该字段?MVC3的防伪助手是否有效,或者我是否需要自己开支票?请参见 建议使用散列并在回发时进行比较,以检查是否进行了更改。请参阅.net 是否检测到隐藏的表单字段已更改?,.net,asp.net-mvc-3,security,hidden-field,.net,Asp.net Mvc 3,Security,Hidden Field,我使用一个隐藏的表单字段来存储用户正在编辑的当前记录。如何防止用户更改该字段?MVC3的防伪助手是否有效,或者我是否需要自己开支票?请参见 建议使用散列并在回发时进行比较,以检查是否进行了更改。请参阅 建议使用散列并在回发时进行比较,以检查是否进行了更改。若要防止CSRF攻击,可以在表单部分使用Html.AntiForgeryToken帮助程序方法若要防止CSRF攻击,可以在表单部分使用Html.AntiForgeryToken帮助程序方法编辑 看来我误解了你的问题,对不起。 事实上,AntiF
建议使用散列并在回发时进行比较,以检查是否进行了更改。若要防止CSRF攻击,可以在表单部分使用Html.AntiForgeryToken帮助程序方法若要防止CSRF攻击,可以在表单部分使用Html.AntiForgeryToken帮助程序方法编辑 看来我误解了你的问题,对不起。 事实上,AntiForgeryToken并不能帮助你预防这种情况。 您可以将这些不可编辑的信息存储在模型中(在我的示例中为Account类),而不公开它,也可以存储在会话中。您还可以在模型的属性中放置一些检查/事件引发,以检测不需要的版本 老掉牙的回答 您可以使用HtmlHelper方法 1/以您的形式:
@using (Html.BeginForm("Edit", "User", FormMethod.Post))
{
@Html.ValidationSummary(true)
<fieldset>
<legend>Account</legend>
<div class="editor-label">
@Html.LabelFor(model => model.FirstName)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.FirstName)
@Html.ValidationMessageFor(model => model.FirstName)
</div>
//Your other fields
<p>
@Html.AntiForgeryToken()
<input type="submit" value="Create" />
</p>
</fieldset>
}
请注意,AntiForgeryToken仅适用于POST请求,并且必须明显启用Cookie:。Edit
看来我误解了你的问题,对不起。
事实上,AntiForgeryToken并不能帮助你预防这种情况。
您可以将这些不可编辑的信息存储在模型中(在我的示例中为Account类),而不公开它,也可以存储在会话中。您还可以在模型的属性中放置一些检查/事件引发,以检测不需要的版本
老掉牙的回答
您可以使用HtmlHelper方法
1/以您的形式:
@using (Html.BeginForm("Edit", "User", FormMethod.Post))
{
@Html.ValidationSummary(true)
<fieldset>
<legend>Account</legend>
<div class="editor-label">
@Html.LabelFor(model => model.FirstName)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.FirstName)
@Html.ValidationMessageFor(model => model.FirstName)
</div>
//Your other fields
<p>
@Html.AntiForgeryToken()
<input type="submit" value="Create" />
</p>
</fieldset>
}
请注意,AntiForgeryToken仅适用于POST请求,并且必须明显启用Cookie:。与其尝试检查用户是否更改了任何内容,不如检查是否允许他们编辑提交的ID所指示的任何记录 如果允许他们编辑有问题的ID,就让他们编辑。如果没有,就不要。甚至不用担心他们是否更改了表单数据,这是一件小事
顺便说一句,反伪造代币实际上没有任何用途。与其尝试检查用户是否更改了任何内容,不如检查他们是否被允许编辑提交的ID所指示的任何记录 如果允许他们编辑有问题的ID,就让他们编辑。如果没有,就不要。甚至不用担心他们是否更改了表单数据,这是一件小事
顺便说一句,反狂欢代币实际上没有任何用途。答案提到将其存储在视图模型中。这指的是ViewBag吗?因为MVC的工作方式,ViewBag只会在页面的生命周期中出现。可以将viewmodel作为隐藏字段写入页面。您可以将字段写入会话,但是会有点混乱。答案提到将其存储在视图模型中。这指的是ViewBag吗?因为MVC的工作方式,ViewBag只会在页面的生命周期中出现。可以将viewmodel作为隐藏字段写入页面。你可以把字段写得乱七八糟。我知道有防伪助手。问题是帮助者是否有助于防止篡改隐藏的表单字段?事实上,我错了,我应该再读几遍你的问题:!刚刚编辑了我的答案。我知道有防伪助手。问题是帮助者是否有助于防止篡改隐藏的表单字段?事实上,我错了,我应该再读几遍你的问题:!刚刚编辑了我的答案。这个问题不是关于csrf攻击。这个问题不是关于csrf攻击。