5

我正在运行 ColdFusion MX,因此在提交表单之前,我无法在我的应用程序中使用内置的cfimage Captcha 功能。

但问题是没有验证码,机器人会提交表单。

防止自动提交的最佳方法是什么?

4

5 回答 5

9

验证码不一定是图像!

尝试以下解决方案之一:

  • 大多数机器人不理解 CSS。创建两个提交按钮,第一个带有将被服务器拒绝的值,第二个带有将被服务器接受的值。使用 CSS 隐藏第一个。
  • 让用户回答一个简单的数学问题。这将要求您创建数学问题并将预期的解决方案存储在某处(如用户的会话),然后将用户提交的答案与存储的答案进行比较。为了获得额外的保护,您可以创建简单的加法、减法和乘法问题。避免除法,余数对某些用户来说是一种痛苦。
  • 机器人读取表单元素的名称,并倾向于忽略文本标签。尝试创建一个名为“optout”的复选框(如时事通讯),默认选中。在复选框旁边,要求用户取消选中该复选框(如果他们是人类)。相反的技术也有效(您要求用户检查的未选中复选框)。

所有这些解决方案都可以在没有第三方代码或 API 调用的情况下完成。

话虽如此,reCAPTCHA非常好,并且易于集成到几乎任何环境中。

于 2010-07-12T19:17:38.067 回答
6

看一下cfformprotect - 它适用于 CFMX 6 和所有更高版本的引擎。

它旨在通过各种方法阻止机器人和垃圾邮件发送者完全可访问 - 并且对大多数用户不可见。

此外,您可能想查看reCaptcha 的 CF 包装器,它与 CFMX 7 兼容。

于 2010-07-12T19:36:53.090 回答
4

我使用不同技术的一种技术是使用图像按钮。您的 POST 处理程序获取单击图像的 x,y 坐标。我发现机器人(它们只是生成帖子请求)正在传递 0,0,并且通过将这些请求放在地板上,我将垃圾邮件帖子减少到低于真实帖子。抱歉,我不知道如何在 CF 中执行此操作,但我希望该技术对您有用。

于 2010-07-12T19:14:37.507 回答
1

无论您使用哪种解决方案,在处理之前在服务器端进行数据验证总是一个好主意。

这篇文章可能会有所帮助:http ://www.bennadel.com/blog/405-Fully-Accessible-Spam-Form-Submission-Blocking-Using-ColdFusion-And-X-HTML-Version-III-.htm

于 2010-07-12T20:38:38.443 回答
0

如何使用计算方法?就像 8 + 5 = ?

或者

使用 ColdFusion.Ajax.submitForm 怎么样?

于 2010-07-19T06:39:21.370 回答