我很担心在我的表单中保留一个隐藏的id字段,因为用户可以通过chrome dev工具轻松更改值,或者只需复制代码,更改值并提交表单。
例如我正在更新学生记录,我有一个隐藏的字段,如:
<input type="hidden" id="student_id" value="1" />
如果我将隐藏字段附加到表单提交通过jquery这样:
$('<input />').attr('type', 'hidden')
.attr('name', "student_id")
.attr('value', '1')
.appendTo('#edit_record_form');
$('#edit_record_form').submit();
虽然我应该仔细检查服务器端。对于客户端来说,这是我可以采用哪种方法来提高安全性?
想知道专业人士会提出哪些其他方法?
非常感谢你。
答案 0 :(得分:1)
虽然我应该仔细检查服务器端。
100%正确。您在客户端进行的任何验证都只是用户的QoL功能。由于任何人都可以向您的服务器端点生成任何请求,因此从安全角度来看,对此表单预先提交进行的任何过滤/验证都是没有意义的。
(另请记住,用户可以访问您的javascript并且可以拒绝在其页面上运行或修改其行为)
除此之外,我认为这种方法的优点和缺点是:
<强>优点:强>
<强>缺点:强>
在我看来,利弊远远不值得专业人士。只需使您的服务器安全,不要担心好奇的用户修改他们的DOM。他们所做的就是获取错误信息并获得重做工作的特权。