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