-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 源进行比较,以确认其有效性。

是否有另一种方法来确保返回值的完整性?这足以让我从表面上接受用户选择吗?这里的最佳实践真的只是将所有选择输入视为文本输入,直到您确认它们是从其有效值范围内选择的?

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

4

2 回答 2

1

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

于 2012-10-10T14:05:47.027 回答
0

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

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

于 2012-10-10T14:06:12.947 回答