我经常使用像Firebug这样的工具,并且经常构建SPA风格的动态表单,其中使用用户输入的DOM操作是常规的。是否有任何保护措施防止用户使用Firebug或任何类型的JavaScript CLI等工具将选项插入选择框?
作为一个简单的例子,考虑这个选择框,你可以选择你是已婚还是未婚(我的实际选择框有更多选项,并通过AJAX从XML文件中填充。这在以后很重要。):< / p>
<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源进行比较,以确认其有效性。
还有另一种方法可以确保返回值的完整性吗?这对我来说是否足以让用户选择面值?这里的最佳做法是将所有选择输入视为文本输入,直到您确认从有效值范围内选择它们为止?
注意:没有代码注入的危险,因为输入的所有值都经过了彻底的审查,并且在它们弹出数据库时非常惰性。
答案 0 :(得分:1)
您无法保护客户端免受此攻击。您必须确保值是有效的服务器端。
答案 1 :(得分:0)
没有。用户可以完全控制页面,因此您永远不应该相信那里的内容。始终在您的服务器上执行完整的验证,并拒绝任何不加起来的内容。
就验证而言,您可以只获取一次XML并重复引用它以检查其有效性,但除此之外并没有那么多可以使它更容易。