有哪些方法可以让客户更难操作DOM?

时间:2014-12-23 19:01:01

标签: javascript jquery html validation dom

我将使用Ajax从客户端处理大量表单数据。现在,我验证输入的方法是为每个需要检查的表单控件添加一个“验证”类。当用户输入信息(或提交表单)时,脚本会查看该类的每个控件的输入,并在移动到下一个选项卡(或将其发送到服务器)之前验证其内容。当然,问题是用户可以轻松删除该类,并且不会查看该项。

虽然我当然会验证服务器端的输入(客户端数据永远不可信任!),但很多用户端内容生成[新输入,动态表单,删除/添加验证类等等]取决于没有修改类的人。虽然我知道客户端最终可以做任何他们想做的事情,但是有什么方法可以让客户难以操作这个过程?

到目前为止,我一直在想:

  • 在页面加载开始时运行脚本,该脚本使用“validate”类抓取所有HTML输入并将它们存储在变量中。当用户提交数据或移动到下一个选项卡时,我不是查看类型为“validate”的元素,而是查看与变量内容相比的数据验证。
  • 向每个输入添加数据验证HTML属性并执行与上面相同的操作(运行脚本并在客户端有时间修改设置之前获取需要验证的输入)

还有什么可以做的吗?我对使用上述方法有点犹豫,因为可能有新的,动态生成的表单元素需要添加/删除到列表中;这个+在页面加载开始时抓取数据可能会导致一些不必要的开销。

1 个答案:

答案 0 :(得分:4)

"虽然我知道客户最终可以做任何他们想做的事情......"

你刚回答了你的问题。如果那是你的起点,你为什么要努力更难?实际上试图破解你的网站是否值得我这么做?如果是的话,我并不在乎它会变得更难。还有,它有多难?您是否会如此努力地弄清楚下一个查看此代码 的开发人员是否能够找出正在发生的事情的JavaScript?

此外,您还要添加更多代码。你有没有编写没有错误的代码?我没有。所以,保证,这件事会有缺陷。因此,如果百万用户中有百分之一的用户可能会尝试做一些不好的事情,那么您最终会停止很多合法用户在他们使用网站时遇到错误他们应该。

客户端检查仅对最终用户有利,并给予他们即时反馈。期。

可能不是你喜欢的答案,但它就是答案。 :)

修改:最后一条评论。让我们说你确实让它变得非常难。那么你会进行服务器端检查吗?你能对你的老板说,#34;哦,我们很难在客户端进行攻击。他们仍然可以。我们只是努力了。所以不需要进行服务器端检查。"当然不是。因此,如果您不管是什么做了服务器端检查,那么在客户端试图进行模糊处理时,您将无法获得任何收益。