2012-10-10 72 views
-1

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

是否有另一种方法来确保返回值的完整性?这对我来说是否足以让用户选择面值?这里最好的做法是将所有选定的输入作为文本输入处理,直到确认它们是从其有效值范围内选择的。

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

回答

0

不可以。用户可以完全控制该页面,因此您绝对不应该相信来自该页面的内容。始终在您的服务器上执行完整的彻底验证,并拒绝任何不合计的内容。

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

1

您无法保护客户免受此影响。您必须确保这些值是有效的服务器端。