某些用户绕过客户端验证

Some users bypassing client side validation

本文关键字:客户端 验证 过客 用户      更新时间:2023-09-26

我试图深入了解我的一些网站用户如何绕过客户端javascript表单验证。 我有一个多步骤表单,它不适用于关闭的 javascript,因为它的步骤会在您进行时显示/隐藏,并且提交按钮通过 ajax 工作(即它没有 type="submit" 属性)。

我正在使用 1000hz 验证器.js库来处理验证,并且通过广泛的测试,我相信它适用于表单上的所有输入。

表单上的一个字段是英国手机号码,因此它应该以 07 开头,长度为 11 个数字。 我为此检查使用了正则表达式pattern="^07'd{9}$",它工作得很好,因为除非正确输入格式,否则我无法继续使用表单。

通过查看表单提交,我发现大约 1% 的申请以无效格式输入此字段,例如 12 个字符长或带有特殊字符,例如国家/地区代码前缀(+44)

我不认为有任何恶意发生,例如人们试图使用工具发布这些数据,因为它看起来像有效的流量。

这些帖子的用户代理都略有不同,但其中很多似乎来自Android 4.4.2,即。

Mozilla/5.0 (Linux; Android 4.4.2; N830 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36

我尝试使用类似的设备复制它,但验证似乎工作正常。

执行输入验证的库可能未加载。这可能有多种原因:

  1. 库的 http 请求失败 - 最终用户可能无法访问库所在的域;
  2. 最终用户安装了某些第三方插件,例如具有广告块插件,这会阻止库运行;
  3. 代码中存在一个错误,导致库无法在特定浏览器上编译;
  4. 最终用户控制他希望运行哪些脚本;

应切换到服务器端验证,以防止发生进一步的错误。