选择元素客户端修改?

时间:2012-10-10 14:03:51

标签: javascript

我经常使用像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源进行比较,以确认其有效性。

还有另一种方法可以确保返回值的完整性吗?这对我来说是否足以让用户选择面值?这里的最佳做法是将所有选择输入视为文本输入,直到您确认从有效值范围内选择它们为止?

注意:没有代码注入的危险,因为输入的所有值都经过了彻底的审查,并且在它们弹出数据库时非常惰性。

2 个答案:

答案 0 :(得分:1)

您无法保护客户端免受此攻击。您必须确保值是有效的服务器端。

答案 1 :(得分:0)

没有。用户可以完全控制页面,因此您永远不应该相信那里的内容。始终在您的服务器上执行完整的验证,并拒绝任何不加起来的内容。

就验证而言,您可以只获取一次XML并重复引用它以检查其有效性,但除此之外并没有那么多可以使它更容易。