表单的前端验证不靠谱,必须同时做后台验证,且尽量不要通过前台的隐藏域传值,通过后台获取值,不然可能存在篡改隐藏域值的问题!
最近在做项目时,由于业务逻辑的改动,修改了之前做好的功能。
之前一对一的逻辑改成了一对多,因为将之前的显示文本改成的下拉框选择并增加了一些隐藏域,这些隐藏域的值会随着下拉框选择的值的变化而变化,自测时功能没有什么问题。但新来的测试人员提了一个bug,说通过浏览器控制台可以随意修改下拉框或隐藏域中的值,可以修改为数据库中不存在的值,同样可以提交保存。这确实是一个BUG,关于数据安全方面的BUG。(自己之前都没注意这些问题,哎)
后来将隐藏域的值改为在后台获取,后台增加对下拉框选中的值进行校验,先校验值数据库中是否存在,再校验当前登录用户与选中值的关系。
以后提交表单时,需要对表单规则做后台验证,再针对一些下拉框中的值做校验(防篡改)。修改功能时,主键一般存于隐藏域,提交后台时,需要验证此记录是否存在,再做修改。