2

我想知道是否可以为仅使用 javascript 的表单创建一个安全的人体检测机制(不使用验证码)来检测鼠标移动,因为 jquery 或操作系统代码都可以移动鼠标(所以我告诉过)。

这是我的计划:

  1. 使用 jQuery,我可以检测鼠标是否移动,然后允许表单提交(如果有)。
  2. 我已经启用了跨站点脚本,因此没有人可以直接提交到网页之外的站点,并且我需要 javascript 来提交表单。
  3. 鼠标移动将为表单中的鼠标字段添加一个值,该值将在服务器端确定它是由人类提交的。
  4. 鼠标字段将使用鼠标移动将播种的某种形式的算法,然后在服务器端对其进行解码,以便机器人可以在鼠标字段中输入任何值。

所以我想知道这种方法是否还有漏洞,或者机器人仍然绕过它的方法。

4

2 回答 2

4

不,不可能创建一个依靠鼠标移动来检测人类的安全机制。查看java.awt.Robot类,了解如何仅使用软件破解它的一个示例。我用这门课写了一个复活节彩蛋到一个程序中,这个程序用鼠标插口,让它跳出一些疯狂的模式。用户喜欢它;-) 你也可以用USB Rubber Ducky破解它。

于 2013-03-16T01:00:28.303 回答
2

您的方法依赖于对机器人来说微不足道的事情,除非您以某种我没有想到的方式使用鼠标移动。

无论您使用鼠标做什么,归根结底,您所做的只是在表单中创建一个值。

我不是 100% 确定你打算如何实现这个,但如果你只是跟踪精确的鼠标位置(我不确定 HTML 是否会让你这样做,但我可能是错的)。机器人可以通过将字段设置为您期望鼠标所在的位置来模拟这一点,或者通过将 x 和 y 的更改添加到某个值来移动“虚拟”鼠标。

(这一切都是假设机器人当然能够理解你的指令。我假设通过用纯文本 HTML 编写“请在下面的框中输入值 '290'”大多数机器人除了那个专门为您的网站编写的将能够注册...)

于 2013-03-16T00:36:35.973 回答