我经常使用像 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 源进行比较,以确认其有效性。
是否有另一种方法来确保返回值的完整性?这足以让我从表面上接受用户选择吗?这里的最佳实践真的只是将所有选择输入视为文本输入,直到您确认它们是从其有效值范围内选择的?
注意:没有代码注入的危险,因为输入的所有值都经过彻底审查,并且在它们被弹出到数据库时非常惰性。