一种验证码过滤器的理论想法。向用户提问,服务器可以以某种微不足道的方式回答,用户也可以回答。共享的答案成为一种公钥,由用户和服务器都知道。
一个与Stack Overflow相关的例子:
用户XYZ有多少声望点数?
提示:在屏幕侧面查找此信息,或者跟随此链接。
用户可以随机从已知的Stack Overflow用户中选择。
更通用的例子:
你住在哪里?
周六9:00时你所在地区的天气状况如何?
提示:使用雅虎天气并提供湿度和一般情况。
然后用户输入他们的答案
西雅图
局部多云,湿度85%
计算机确认确实是那个时间在西雅图的天气条件。
答案对用户是唯一的,但服务器有一种方法查找和确认答案。
问题的类型可以各种各样。但是想法是您对人类需要查找的事实和服务器可以轻松查找的事实进行一些处理。该过程是一个双方对话,并需要一定的相互理解。这是一种反转测试。让人类证明它能够提供可计算数据的证据,但是需要人类知识才能产生可计算数据。
另一个可能的实现。你叫什么名字,什么时候出生?
人类将提供已知答案,计算机可以在数据库中查找信息。
也许可以通过机器人填充数据库,但机器人需要具有一定的智能才能组合相关事实。服务器端的数据库或查找表可以被系统地修剪掉明显的垃圾邮件属性。
我相信在实现中还存在缺陷和细节。但是这个概念似乎很可靠。用户提供了一种组合事实,服务器可以查找,但服务器控制应该问的组合类型。组合可以随机化,并且服务器可以使用各种策略来查找共享答案。真正的好处是,您要求用户在其答案中提供一些自我概述和揭示。这使得对于机器人来说更加困难。一堆计算机开始在许多服务器和验证码表单上使用相同的答案,例如
我是1972年下午3:45出生的机器人。
然后,该响应类型可以进行分析并由整个网络用于阻止机器人,有效地使自动化在几次迭代后变得毫无价值。
当我考虑这个问题时,实现基本的阅读理解测试以评论博客文章会很有趣。在博客文章结束后,作者可以向他或她的读者提出问题。问题可以针对每篇博客文章进行唯一设置,并且它具有要求用户在评论之前实际阅读的额外好处。您可以在帖子末尾写下简单的问题,答案存储在服务器端,然后有一系列无意义的问题来加密数据库。
这篇文章谈论了紫色验证码技术吗?
服务器端答案(假,否)
这是一篇关于验证码的文章吗?
服务器端回答(true,是)
这是一篇关于迈克尔·杰克逊的文章吗?
服务器端回答(false,不是)
似乎有几个问题以随机顺序呈现并使顺序具有重要意义是有用的。例如,上面的答案将= no,yes,no。打乱顺序,并混合一些无意义的问题和既有否定答案又有肯定答案的问题。