我经常使用像Firebug这样的工具,并且经常构建SPA风格的动态表单,其中用户输入的DOM操作是常规的。是否有任何防止用户使用Firebug或任何类型的javascript CLI等工具将选项插入选择框?作为一个简单的例子,考虑这个选择框让你选择你是已婚还是未婚(我的实际选择框有更多的选项,并通过AJAX从XML文件填充,这将在稍后重要)。选择元素客户端修改?
<select name="mstatus" id="mstatus">
<option value="" selected>Specify marital status</option>
<option value="Married">Married</option>
<option value="Single">Single</option>
</select>
目前,我可以很容易地插入另一个选项正是如此(我有MooTools的页面上):
$('mstatus').innerHTML+="<option value='Rebel'>I won't play by the rules</option>"
现在当然在这个例子中,我可以检查服务器端所选择的选项是否有效,而不太悲伤了。但通常我必须将用户提交与每个选择的原始XML源进行比较,以确认其有效性。
是否有另一种方法来确保返回值的完整性?这对我来说是否足以让用户选择面值?这里最好的做法是将所有选定的输入作为文本输入处理,直到确认它们是从其有效值范围内选择的。
注意:没有代码注入的危险,因为输入的所有值都经过彻底审查,并且在它们弹出到数据库时非常不活跃。