如果我的 ChangePassword 表单包含隐藏的用户 ID 字段怎么办?
BadPerson 知道 GoodPerson 的 ID。他使用 FireBug 打开“更改密码”表单,将其 Id 更改为 GoodPerson 的 Id,因此 GoodPerson 的密码发生更改。
当然,我可以创建一些服务器逻辑来防止这种情况,但我认为应该有一些开箱即用的解决方案,如果隐藏字段被更改,它会抛出异常,我不知道。
EDIT好的,更改密码是一个坏例子。我在隐藏字段中有 id 的任何编辑表单都有同样的问题。
我同意 Darin 的观点,即表单身份验证将解决上述特定问题(更改密码)。此答案适用于确保隐藏字段的值不更改的更普遍的问题。
对此的最佳解决方案是包含另一个隐藏字段,其中包含第一个隐藏字段值的哈希值。这样,如果第一个隐藏字段发生更改,您就会知道。生成的 HTML 看起来像这样:
<input id="productId" name="productId" type="hidden" value="1" />
<input id="productId_sha1" name="productId_sha1" type="hidden" value="vMrgoclb/K+6EQ+6FK9K69V2vkQ=" />
本文 http://blog.slatner.com/geeky/securing-form-values-in-asp-net-mvc.html展示了如何做到这一点并包含扩展的源代码Html.SecuredHiddenField
这将为您处理逻辑。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)