3

我有个问题。如果我使用 jquery/javascript 验证输入字段。

愚蠢的例子:

if (password.length > 6) { //do soemthing useful }

访问者可以在 chrome 或 firebug 中启动检查器,并将该值 6 编辑为例如 2,他能否创建长度为 2 个字符的密码?

如果是,处理这个问题的最佳方法是什么?总是在服务器端实施双重检查吗?

4

2 回答 2

2

始终,始终在服务器上验证是否对正在更改的数据有影响*。这也涵盖了用户可能没有启用 JavaScript 的(这些天相当模糊)场景。

一些框架(例如 ASP.Net)使声明验证变得容易,该验证将首先在客户端运行,但在数据到达服务器时自动重新执行。

请记住,不仅仅是表单字段容易受到篡改。Cookies 和 URL 参数可以很容易地改变。

*任何危害您的数据安全、应用程序的正确使用、服务器性能等的事情。

于 2013-02-26T09:16:24.320 回答
1

我必须第二次添,您必须始终在服务器上进行验证。

用户甚至不需要像 Firebug 这样复杂的东西来绕过您的验证。您正在将 JavaScript 以纯文本形式发送给用户。用户所要做的就是将您的 .html 文件保存到磁盘,将 JavaScript 更改为他们喜欢的任何内容,然后在他们希望的任何浏览器中打开它。

即使有人不这样做,HTTP_X_REQUESTED_WITH如果他们编写自己的 HTTP 客户端(或使用像 Curl 这样的命令行 HTTP 客户端),他们总是可以伪造任何 HTTP 标头(如 )。

不需要调试器、代理、中间人或其他复杂的协议劫持。(虽然这些都是您需要在服务器上验证的好理由)

于 2013-02-26T17:15:28.777 回答