javascript - 一些用户绕过客户端验证

标签 javascript jquery forms validation

我试图弄清楚我的一些网站用户是如何绕过客户端 JavaScript 表单验证的。我有一个多步骤表单,无法在关闭 JavaScript 的情况下工作,因为它的步骤会随着您的进度而显示/隐藏,并且提交按钮通过 ajax 工作(即它没有 type="submit" 属性)。

我正在使用1000hz validator.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. 最终用户正在控制他希望运行哪些脚本;

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

关于javascript - 一些用户绕过客户端验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36128836/

相关文章:

javascript - e.preventDefault() 不适用于表单提交

android - 滚动到表单元素

javascript - 以 "verification"模态显示形式和内容

javascript - AngularJS:通过评估它们的属性值来显示/隐藏多个 div

javascript - 为什么 google(和 bing)没有将我的抓取工具列入黑名单?

javascript - 价格范围 slider 的定位

javascript - 跳过 Javascript 循环中的错误

php - 从点击的按钮获取 URL

javascript根据选择选项值条件向id添加值

django - 向ModelForm添加额外的字段