javascript - 防止机器人提交到外部服务器

标签 javascript security recaptcha

我正在尝试阻止机器人客户端。

表单提交给支付提供商,支付提供商将请求响应发回我们的服务器。

我在页面中添加了一个验证码,该按钮可以在完成后提交表单。显然,这根本没有帮助,因为简单地调用 document.forms[0].submit(); 就可以解决这个问题。

鉴于我只能在客户端工作,我所说的没有办法防止有针对性的攻击是否正确?

检查员可以看到任何 JavaScript 技巧。我猜我需要切换到支付提供商并让它成为他们的问题?

我还想在抄送字段中禁用粘贴,但 FF 可以覆盖它,此外,考虑到表单提交详细信息很容易看到,机器人很可能只是创建一个帖子字符串并将其提交给支付提供商。

最佳答案

有几种方法可以解决这个问题。

首先,假设支付提供商仍然传递原始表单信息,您仍然可以实现或多或少典型的验证码挑战。具有无效验证码响应的机器人仍然可以将其发送给支付提供商,但一旦该响应发送给您,您就可以检测并拒绝该响应。

其次,考虑“工作量证明”机制。使用一些 JavaScript 来执行需要一些时间才能完成的繁忙计算。对于人类访问者来说,这项工作只会在他们填写表单时在后台完成,但对于进行高速、大容量交互的机器人来说,这是一个真正的问题。这对阻止机器人没有任何作用,但有时是一种有效的威慑。

但最有效的是,为什么您的表单需要直接提交给支付提供商?您不能提交到您自己的服务器端代码来处理验证码,然后从那里提交或重定向到支付提供商吗? (我过去曾将这种架构与奇怪的支付系统一起使用,但没有一个遇到任何问题。)

关于javascript - 防止机器人提交到外部服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51634846/

相关文章:

javascript - ScrollMagic 销垫片太大

javascript - 使用 Mongoose 添加不在模式中的字段

ajax - reCAPTCHA Ajax API + 自定义主题不起作用

javascript - 验证码弹出窗口溢出用户屏幕,如何重新定位?

javascript - 无法使用 Angular 显示实时摄像机 RTSP 流

javascript - jquery.floatThead 导致标题变得模糊

security - Coldfusion 安全问题...如何隐藏文件目录?

algorithm - 保护无线协议(protocol)的最佳实践

php - 如何在PHP中密码保护pdf

Angular 4 get函数在http post请求后返回值