Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用拖放的jQuery验证码:这是如何证明bot的?_Jquery_Drag And Drop_Captcha - Fatal编程技术网

使用拖放的jQuery验证码:这是如何证明bot的?

使用拖放的jQuery验证码:这是如何证明bot的?,jquery,drag-and-drop,captcha,Jquery,Drag And Drop,Captcha,我目前使用的是CAPTCHA技术,要求访问者在继续之前将某些项目重新排列为“正确”的顺序。这是一本书 我想知道这到底是如何防机器人攻击的 是否有人可以像这样将一些JS注入我的页面,以编程方式重新排序项目 $("div.cItem"):contains('0').appendTo('#captcha'); $("div.cItem"):contains('1').appendTo('#captcha'); $("div.cItem"):contains('2').appendTo('#captch

我目前使用的是
CAPTCHA
技术,要求访问者在继续之前将某些项目重新排列为“正确”的顺序。这是一本书

我想知道这到底是如何防机器人攻击的

是否有人可以像这样将一些JS注入我的页面,以编程方式重新排序项目

$("div.cItem"):contains('0').appendTo('#captcha');
$("div.cItem"):contains('1').appendTo('#captcha');
$("div.cItem"):contains('2').appendTo('#captcha');
$("div.cItem"):contains('3').appendTo('#captcha');
$("div.cItem"):contains('4').appendTo('#captcha');
$("div.cItem"):contains('5').appendTo('#captcha');
更新


很抱歉,链接到不起作用的JSFIDLE链接。这是固定的。

我认为使用javascript的机器人(使用curl的经典机器人,…)并不多,所以我认为这是一个公平的机器人

OT:我可以在我的项目中使用它吗?它看起来很漂亮而且防弹:P

有没有可能有人可以像这样在我的页面中注入一些JS 以编程方式重新排序项目

$("div.cItem"):contains('0').appendTo('#captcha');
$("div.cItem"):contains('1').appendTo('#captcha');
$("div.cItem"):contains('2').appendTo('#captcha');
$("div.cItem"):contains('3').appendTo('#captcha');
$("div.cItem"):contains('4').appendTo('#captcha');
$("div.cItem"):contains('5').appendTo('#captcha');
对。创建一个脚本来自动重新排序div是相当简单的

也就是说,机器人通常不使用Javascript。他们只是创建一个POST请求。如果可以在不启用Javascript的情况下提交表单,那么它不是很有效

如果您需要启用Javascript来提交表单,这对可访问性来说是非常糟糕的


但是,为了解决这个总的想法,你应该考虑到计算机比人类更能重新排列数字列表。如果你想让它迎合人类而不是计算机,你应该让用户重新安排一些更难计算的东西。我不知道什么是最好的,也许是把动物的照片从最小的排列到最大的,或者类似的

我很抱歉,但这是非常不可靠的。一个机器人需要做的就是组装一篇文章,然后将它完全发回,避免你的humad检查

我只需通过编程构建你想要的任何文章值即可|


你可能会发疯,让服务器生成它们,将UUID传递给所有项目,将其存储在会话中,等等。但是如果有什么简单的事情(比如数字),你可以对其运行OCR。

没有客户端验证是防机器人的。任何研究您的页面的人都可以轻松地绕过它,因为绕过它的逻辑就在您的页面javascript中。要使某些东西不受机器人的影响,您需要对人的行为进行服务器端验证。

这在您的示例中是不可能的,因为它只包含用户界面

将结果发送到服务器的方式将使其成为防bot的方式。机器人不会使用页面上的Javascript绕过验证码,它只会尝试将正确的结果返回给服务器。结果本身不可能确定,也就是说,您不应该只将
“012345”
发送回服务器。块的标识应该是随机的,它们的数量不容易通过读取元素的内容来确定


旁注:随机排序不是一个很好的洗牌方式。A很容易实现。

我觉得我应该指出,你的方法不仅是防机器人,而且是防访问性的。除了可用性之外,如果你的网站足够受欢迎,成为验证码破坏者的目标,然后,如果你使用JS dom移动而不是简单的文本字段,垃圾邮件发送者需要大约10秒的时间来处理。顺便问一下,如果用户禁用了JavaScript会发生什么?该网站严重依赖jQuery和AJAX,如果有人没有启用JS,注册将是他们最不关心的问题。:)FWIW,您可以添加
$('#captcha')。可排序({“axis”:“x”})使拖拽和拖拽更加明显。你能告诉我更多关于这种方法的信息吗,或者带我到某个地方做更多的解释吗?最终使用了reCaptcha。多谢大家