可能有点新手问题,但无论如何我都会问它。 我是一个webforms开发人员但是我得到了一个MVC应用程序来照顾并找到了我认为可能是一个安全漏洞,只是想在我向雇主提出这个问题之前检查我的想法。
基本上我们有一个编辑对象的视图(称之为汽车) 因此该对象包含Make,Model,ManufactureYear,Color,RegistrationNumber
视图显示以上所有内容,但只允许编辑颜色。
问题是其他属性会在隐藏字段中写入HTML,然后回发并用于填充推送到数据库的汽车对象。
我看到了这一点并想到,如果我改变这些隐藏的田地会发生什么,果然,我现在有一辆生产日期为10年的汽车......
最初的开发人员说,这就是MVC的工作方式......我是新手(当时有2小时的MVC体验),所以目前无法对此进行比赛。
有人有什么想法吗?任何人都可以建议如何做到这一点 - 我也告诉我这样做(这将是从数据库拉出汽车,只更新视图可以实际操作的字段)也是错误的...
我非常感谢您的建议!
干杯
答案 0 :(得分:1)
这绝不是“MVC”所固有的。它更符合Web的无状态特性以及所有RESTful类型的东西,但这种特殊情况并不合理。听起来好像你只想要一组有限的可更新字段,你应该只有对象的某种形式的标识符(比如RDBMS中的主键)和你想要更新的字段(或者Controller应该丢弃其余的字段) 。您当然不允许任意访问应该限制的字段,以追求不携带状态。