首页 / 知识
关于安全性:实用的非基于图像的CAPTCHA方法?
2023-04-12 01:17:00
Practical non-image based CAPTCHA approaches?看起来我们将为堆栈溢出添加captcha支持。这对于防止僵尸、垃圾邮件发送者和其他恶意脚本化活动是必要的。我们只希望人类在这里发布或编辑东西! 我们将使用javascript(jquery)captcha作为第一道防线: http://docs.jquery.com/tutorials:safer_contact_forms_without_captchas 这种方法的优点是,对大多数人来说,验证码永远不会被看到! 但是,对于禁用了javascript的人,我们仍然需要一个回退,这就是它变得棘手的地方。 我为ASP.NET编写了一个传统的验证码控件,我们可以重用它。 但是,我更喜欢使用文本来避免在服务器上为每个请求创建所有这些图像的开销。 我见过……
也许我只是在这里倾斜的风车,但我想有一个资源密集度较低,非基于图像的 思想? 我最喜欢的验证码: 我开发的一种方法似乎非常有效(尽管我可能没有你那么多评论垃圾),就是有一个隐藏的字段并用一个伪造的值填充它,例如:
然后我有一段javascript,它用页面加载的秒数每秒更新一次值:
然后在提交表单时,如果反垃圾邮件值仍然是"lalalala",那么我会将其标记为垃圾邮件。如果反垃圾邮件值是一个整数,我会检查它是否高于10(秒)。如果低于10,我就把它标记为垃圾邮件,如果低于10,我就让它通过。
理论是:
这个方法的缺点是它需要javascript,如果您没有启用javascript,您的评论将被标记为垃圾邮件,但是,我确实检查了标记为垃圾邮件的评论,所以这不是问题。 对评论的回应 @mrass类比:服务器端方法听起来是一个很好的主意,与在JavaScript中执行完全相同。好电话。 @阿维:我知道这个方法很容易受到直接攻击,正如我在博客上提到的。然而,它将保护您的普通垃圾邮件机器人盲目提交垃圾的任何形式,它可以找到。 除非我遗漏了一些东西,否则使用recaptcha有什么问题,因为所有的工作都是在外部完成的。 只是一个想法。
我喜欢这个想法,难道我们没有任何方法可以直接进入代表系统吗?我的意思是,任何一个有100个代表的人都可能是人。所以如果他们有代表,你甚至不必费心做任何关于验证码的事情。 那么,如果他们没有,那么发送它,我相信它不会花那么多的帖子达到100和社区将立即潜水在任何人似乎是与攻击性标签垃圾邮件,为什么不添加一个"报告垃圾邮件"链接,在200下载模式?获得其中3个,Spambot成就解锁,再见;) 编辑:我还应该补充一点,我喜欢非图像验证码的数学思想。或者是一个简单的谜语类型的东西。可能会使帖子更有趣^^ 蜜罐验证码怎么样? 避免任何时候最糟糕的捕获。
一定要有人来写。 你可以用recaptcha打印单词的方式来做一些琐碎的问题。它提供了两个词,一个知道答案,另一个不知道答案-在第二个答案足够多之后,它现在也知道答案了。问两个小问题: 女人需要男人就像鱼需要男人一样? 橙色橙色橙色。类型绿色。 当然,这可能需要与其他技术相结合,例如计时器或计算机密。问题需要轮转/撤销,因此为了保持问题的供应,您可以特别添加: 输入您明显的问题: 你甚至不需要答案,其他人会帮你解决的。您可能必须允许将问题标记为"太难",例如:"asdf ejflf asl;jf ei;fil;asfas"。 现在,为了让运行StackOverflow游戏机器人的人放慢速度,您可以按IP地址旋转问题-这样相同的IP地址就不会得到相同的问题,直到所有问题都解决为止。这会减慢建立已知问题字典的速度,迫使机器人的人类所有者回答你所有的琐事问题。 在当前的概念化中,captcha被破坏,并且常常很容易被绕过。现有的解决方案都不能有效地工作-Gmail最多只能成功20%。 事实上,情况比这糟糕得多,因为统计数据只使用OCR,而且还有其他方法可以解决这一问题——例如,Captcha代理和Captcha农场。我最近在OWASP上做了一个关于这个主题的演讲,但是PPT还没有上线… 虽然Captcha无法以任何形式提供实际的保护,但如果您想要阻止垃圾车的随意驾驶,它可能足以满足您的需要。但这并不能阻止半专业的垃圾邮件发送者。 通常,对于具有任何保护价值的资源的站点,您需要一种三方面的方法:
Captcha可以在第二个方面帮上一点忙,仅仅是因为它改变了经济性——如果其他方面都到位了,就不再需要费心突破Captcha(最低成本,但仍然是成本)来成功处理如此少量的垃圾邮件了。 再说一次,不是所有的垃圾邮件(和其他垃圾)都是由计算机生成的-使用Captcha代理或农场,坏人可以有真正的人向你垃圾邮件。 Captcha代理是指他们将您的图像提供给其他网站(如色情、游戏等)的用户。 Captcha农场有许多廉价劳动力(印度、远东等)来解决这些问题…通常每解决1000个captchas需要2-4美元。最近在易趣上看到了这个帖子… 我在朋友的网站上见过一次。他以20美元的价格把它卖了。这是ASCII艺术! http://thephpro.com/products/captcha/
真是太蠢了。所以会有用户可以编辑网站上的任何帖子,但没有验证码就不能发布?如果你有足够的代表投反对票,你有足够的代表没有验证码发布。如果必须的话,把它调高。此外,还有许多垃圾邮件检测方法,你可以使用没有图像识别,所以它甚至为未注册的用户,它将永远没有必要填写这些上帝遗弃的验证码表格。 不过,要确保这不是谷歌能回答的问题。这也显示了一个问题——操作顺序! 如何利用社区本身来反复检查这里的每个人都是人,比如像信任网一样的东西?为了找到一个真正值得信任的人来启动网络,我建议使用这个验证码来确保他绝对是100%的人。 RapidShare Captcha-Riemann假说http://codekiephire.eu/kram//uuuRapidShareu Captcha2.webp 当然,他很可能会忙于准备菲尔兹的奖牌演讲来帮助我们建立信任网,但是… 阿西拉是有史以来最可爱的船长。 只需让用户解决简单的算术表达式:
等。 一旦垃圾邮件发送者发现,就应该很容易发现他们。每当检测到垃圾邮件发送者请求时,在以下两个命令之间切换:
很明显,这是因为所有垃圾邮件发送者都足够聪明,可以使用 我一直在使用以下简单的技术,这不是万无一失的。如果有人真的想绕过这一点,那么很容易就能看到源代码(即不适合Google Captcha),但它会愚弄大多数僵尸。 添加2个或多个这样的表单域:
然后使用CSS隐藏它们:
在提交时,检查这些表单域中是否包含任何数据,如果这些数据确实未能通过表单发布。其理由是机器人程序将读取HTML并尝试填充每个表单字段,而人类不会看到输入字段并将其单独保留。 很明显,您可以做更多的事情来减少这种可利用性,但这只是一个基本概念。 虽然我们都应该知道基本的数学知识,但数学难题可能会引起一些混乱。在你的例子中,我确信有些人会用"8"而不是"1"来回答。 用粗体或斜体突出显示随机字符的简单文本字符串是否合适?用户只需输入粗体/斜体字母作为验证码。 例如,ssdfatwerweajhcasdakkoghefdhrffghlfgdhowfgh 在这种情况下,"堆栈"就是验证码。这个想法显然有许多不同之处。 编辑:示例变体,以解决此想法发现的一些潜在问题:
我知道没人会读这本书,但是狗或猫的验证码呢? 你得说哪一个是猫或狗,机器不能这样做。http://research.microsoft.com/asirra/ 是一个凉爽的。 尽管开始了类似的讨论: 我们正在我们的一个经常挖掘数据的应用程序上尝试此解决方案: 一个更好的验证码控制(看马-没有图像!) 你可以在我们的建筑检查搜索中看到它的作用。 您可以查看源代码并看到验证码只是HTML。 我只使用任何人都能回答的简单问题: 天空是什么颜色的?橙色是什么颜色?草是什么颜色的? 这样做是为了让有人自定义程序一个机器人到你的网站,这可能不值得努力。如果他们这样做了,你只需改变问题。 我个人不喜欢验证码,它损害了可用性,也不解决使有效用户无效的安全问题。 我更喜欢可以在服务器端执行的bot检测方法。由于您有有效的用户(多亏了OpenID),您可以阻止那些不"行为"的用户,您只需要识别bot的模式并将其与典型用户的模式匹配,然后计算差异。 Davies,N.,Mehdi,Q.,Gough,N.:使用游戏引擎和人工智能工具创建和可视化智能NPC http://www.comp.glam.ac.uk/asmta2005/proc/pdf/game-06.pdf Golle,P.,Ducheneaut,N.:防止机器人玩在线游戏<--ACM门户 Ducheneaut,N.,Moore,R.:游戏的社会面:大型多人在线游戏中互动模式的研究 当然,这些参考大多指向视频游戏机器人检测,但这是因为这正是我们小组题为"机器人战争:机器人识别的游戏中探索。这本书没有出版,也没有什么,只是一个学校项目。如果你感兴趣,我可以发电子邮件。但事实是,即使它是基于视频游戏机器人检测的,您也可以将其归纳到Web上,因为有一个用户附加到了使用模式上。 我同意Musigenesis的这种方法,因为它是我在我的网站上使用的方法,并且工作得很好。不可见的验证码过程是阻止大多数脚本的一种不错的方法,但这仍然不能阻止脚本编写器对您的方法进行反向工程,并"伪造"您在javascript中寻找的值。 我会说,最好的方法是:1)建立一个用户,这样当他们不好的时候你可以阻止;2)识别一个算法,检测典型模式与非典型模式的网站使用;3)相应地阻止该用户。 我有一些想法想和你分享… 避免OCR的第一个想法一个对用户有隐藏部分的验证码,但完整的图像是两个代码在一起的,所以OCR程序和验证码场读取包含可见部分和隐藏部分的图像,尝试对两者进行解码,但未能提交…-我已经准备好修复那个问题并在线工作。 http://www.planethost.gr/ideawithhiddenpart.webp 第二个让它更容易的想法一个包含许多单词的页面,人类必须选择正确的单词。我也创造了这个,很简单。这些词是clicable图像,用户必须点击右边的一个。 网址:http://www.planethost.gr/manywords.webp 第三个想法,没有图像与上一个相同,但带有分隔符和文本或小图标。用户必须只点击一个正确的DIV/LETTER/IMAGE,无论是什么。 http://www.planethost.gr/arrayfromdivs.webp 最后的想法-我称之为ciclecaptcha还有一个我的ciclecaptcha,用户必须在图像上找到一个点。如果他找到它并点击它,那么就是一个人,机器可能会失败,或者需要制作新的软件来找到一种方法来使用它。 http://www.planethost.gr/ciclecaptcha.webp网站 欢迎批评。 最好的验证码!也许你需要像这样的东西注册,以保持riff抽奖。 最近,我开始添加一个名称和ID设置为"message"的标签。我用CSS将其设置为隐藏(显示:无)。垃圾邮件机器人看到它,填写它并提交表单。服务器端,如果填写了ID名为的文本区域,我会将邮件标记为垃圾邮件。 另一种我正在研究的技术是随机生成名称和ID,其中一些是垃圾邮件检查,另一些是常规字段。 这对我很有效,我还没有收到任何成功的垃圾邮件。但是,访问我的网站的访问者要少得多:)
足够简单,并且围绕它进行编码并不困难。我看到两个威胁: 使用简单的算法,您可以击退威胁1,但不能击退威胁2。 简单的文本听起来不错。贿赂社区来做这项工作!如果你像我一样相信,那么rep points衡量用户帮助站点成功的承诺,那么提供信誉点来帮助保护站点不受垃圾邮件发送者的伤害是完全合理的。 一个简单的问题和一组正确的答案的每一个贡献提供+10的声誉。这个问题应该适当地远离(编辑距离)所有现有的问题,如果人们不能回答它,声誉(和问题)应该逐渐消失。假设正确答案的失败率超过20%,那么提交者在每个错误答案中损失一个信誉点,最多15个。所以如果你提交了一个错误的问题,你现在得到+10,但最终你会得到-5。或者让一个样本的用户投票决定验证码问题是否是一个好的问题是有意义的。 最后,和每日代表上限一样,假设没有用户可以通过提交验证码问题获得超过100的声誉。这是对此类贡献权重的合理限制,也有助于防止垃圾邮件发送者将问题播种到系统中。例如,您可以选择与提交者声誉成比例的问题,而不是概率相等的问题。乔恩·斯基特,请不要提交任何问题:—) 如果你结合使用了你的验证码想法(选择其中任何一个-或随机选择其中一个):
除了在页面的CSS隐藏部分放置完全相同的验证码之外——蜜罐创意。这样,你就有了一个地方,你期望得到正确的答案,而另一个地方,答案应该是不变的。 我用一个简单的"留空这个字段:"字段获得了令人惊讶的好结果。机器人程序似乎可以填充所有内容,特别是当你将字段命名为"url"时。再加上严格的裁判检查,我还没有让机器人通过。 请不要忘记这里的无障碍性。很多使用屏幕阅读器的人都无法使用Captchas。简单的数学问题,或者非常琐碎的琐事(我喜欢"天空是什么颜色"的问题)对视力受损的用户更友好。 实际上,有一个与编程相关的验证码集可能是一个主意。例如: 有可能有人构建语法检查器来绕过这个问题,但是绕过验证码要做的工作要多得多。不过,你有一个相关的验证码的想法。 1)人类解决方案 这里提到的所有解决方案都被人类解决方法所规避。一个专业的spambot可以保持数百个连接,当它无法自己解决captcha时,它会将屏幕截图传递给远程人类解决方案。 我经常读到Captchas的人类解决者违反法律。好吧,这是由那些不知道这个(垃圾)行业如何运作的人写的。人类解算器不直接与他们解算的捕获码站点交互。他们甚至不知道从哪个网站截取并发送了Captcha。我知道有几十家(如果不是几百家)公司或/和网站提供人类解决方案服务,但没有一家公司直接与被破坏的董事会进行互动。后者不违反任何法律,因此验证码解决是完全合法(和官方注册)的商业公司。他们没有犯罪意图,例如,可能被用于远程测试、调查、概念验证、原型制作等。 2)基于上下文的垃圾邮件人工智能机器人可以在不同的时间从不同的IP地址(不同的国家)确定上下文并维护上下文敏感的对话。即使是博客的作者也常常无法理解评论来自机器人。我将不深入讨论许多细节,但是,例如,僵尸程序可以对人类对话进行网络抓取,将其存储在数据库中,然后简单地重用它们(逐句),因此软件甚至人类都无法检测到它们是垃圾邮件。 投票最多的答案是:
以及蜜罐答案和这条线索中的大多数答案都是明显错误的。我敢说他们是注定要受害的方法 大多数Spambot都是通过本地和远程的javascript浏览器(补丁和管理)工作的,这些浏览器来自不同的IP(不同的国家),它们非常聪明,可以绕过蜂蜜陷阱和蜜罐。 不同的问题是,即使是博客所有者也不能经常检测到评论来自bot,因为它们实际上是来自人类对话和其他网站(论坛、博客评论等)的评论。 3)概念上的新方法对不起,我把这部分删掉了 对服务器的加密nonce进行Ajax查询。服务器返回包含nonce的JSON响应,并设置包含nonce值的cookie。在javascript中计算nonce的sha1散列,将值复制到隐藏字段中。当用户发布表单时,他们现在用nonce值发送cookie。计算cookie中nonce的sha1散列值,与隐藏字段中的值进行比较,并验证您在过去15分钟内生成了nonce(memcached适用于此)。如果所有的检查都通过了,请发表评论。 这项技术要求垃圾邮件发送者坐下来搞清楚发生了什么事,一旦他们这样做了,他们仍然必须发出多个请求并保持cookie状态才能获得评论。另外,如果他们首先解析和执行javascript并发出Ajax请求,那么他们只会看到 理论上,这可以通过默默无闻来证明安全性,但在实践中,这是极好的。 我从来没有见过一个垃圾邮件发送者试图打破这一技术,尽管可能每隔几个月我就会收到一个手工输入的关于主题的垃圾邮件条目,这有点奇怪。 有人还建议使用Raphael JavaScript库,它显然可以让您在所有流行的浏览器中使用客户机: http://dmitry.baranovskiy.com/raphael/ …但这对我的 这里有一些解决方案,claimed从来没有破碎的机器人。我认为《冰与那些问题,你也永远不会知道许多人们不去处理过去的"验证码"或。
一个网站massively不能成为用户友好的人。它似乎是做业务的收购价格(在互联网上,你有两个问题与一些垃圾邮件档案工作手册。验证码(或类似的系统),把用户的资料。验证码是比不全。
admittedly stackoverflow,有一个非常knowledgeable受众,所以很多有创造性的解决方案,可以使用。但更多的选矿厂的网站,你可以使用什么真的是人们都只使用两个或其他的,只是因为你会失去他们的网站和混乱的交通。在一般情况下,验证码不应该停止对全被调谐的机器人,或其他的攻击向量。这让我太难的挑战为合法用户。开始了,使它更容易和难,直到你有限量的垃圾邮件somewhat manageable A级,但不多。
鸭,终于,我想回来,两个图像为基础的解决方案:你不需要创建一个新的图像的每一个小时。你可以预先create a number of大他们(也许几千?)然后变慢,这在时间上。例如,《expire 100 oldest Images每10分钟或一小时和replace看到他们有一个新的酮。对于每一个请求,选择一randomly captcha从整体上。
酸性,这不会为0.8 A为导向的攻击,但在这里是上述很多次之前,必须验证码不会。它将足以阻止它的两个随机的机器人,但。
我不得不承认,我没有对抗音标的经验,也不知道它们有多复杂。也就是说,我在jquery文章中没有看到任何不能完全在服务器上完成的事情。 要重新表述jquery文章中的摘要,请执行以下操作: 另一种选择是,如果您想使用传统的图像验证码,而不必在每次请求时生成它们,那么就可以在脱机状态下预先生成它们。然后您只需要随机选择一个与每个表单一起显示。 我会做一个简单的基于时间的验证码。 启用javascript:检查发布时间减去加载时间是否大于HumanisPeryFastReader。 禁用javascript:HTTP请求开始的时间减去HTTP响应结束的时间(存储在会话或隐藏字段中)大于HumanisPeryFastReader加上NetworkLatency时间2。 在这两种情况下,如果返回true,则重定向到图像验证码。这意味着大多数时候,人们不必使用图像验证码,除非他们是非常快的读者或垃圾邮件机器人设置为延迟响应。 请注意,如果使用隐藏字段,我将为它使用随机ID名称,以防bot检测到它正被用作验证码并尝试修改该值。 另一种完全不同的方法(仅适用于javascript)是使用jquery sortable函数来允许用户对一些图像进行排序。也许是一个3x3的小拼图。 这一个使用1px块生成看起来像图像但纯HTML/CSS的图像。有关示例,请参见此处的链接:http://www.nujij.nl/registeren.2051061.lynkx?_ showinpopup=真 基于CSS的验证码怎么样?
显示"abcde"。当然,使用定制的机器人仍然很容易。 回顾一下大学赞助并帮助数字化书籍。
验证码滤波器的理论思想。向用户提出一个问题,服务器可以以某种方式回答这个问题,而用户也可以回答这个问题。共享答案成为用户和服务器都知道的一种公钥。 堆栈溢出相关示例: 用户XYZ有多少信誉点? 提示:在屏幕的侧面查看此信息,或者按照此链接操作。可以从已知的堆栈溢出用户中随机抽取该用户。 更一般的例子:你住在哪里?你住的地方星期六九点的天气怎么样?提示:使用雅虎天气和提供湿度和一般条件。 然后用户输入答案 西雅图部分多云,湿度85% 计算机证实了当时西雅图的天气状况。 答案对于用户是唯一的,但是服务器有一种查找和确认答案的方法。 问题的类型可能会有所不同。但是,这个想法是,您需要对一些事实的组合进行处理,即一个人必须查找这些事实,而服务器则可以进行琐碎的查找。这个过程是由两部分组成的对话,需要一定程度的相互理解。这是一种反向转弯试验。有人证明它能提供一个可计算的数据块,但要产生可计算的数据需要人的知识。 另一个可能的实现。你叫什么名字?你什么时候出生的? 人类会提供一个已知的答案,计算机可以在数据库中查找信息。 也许数据库可以由bot填充,但bot需要一些智能来将相关事实组合在一起。服务器端的数据库或查找表可以系统地删除明显的类似垃圾邮件的属性。 我确信在实现中有缺陷和细节需要解决。但这个概念似乎是合理的。用户提供了服务器可以查找的事实组合,但是服务器可以控制应该请求的组合类型。这些组合可以是随机的,服务器可以使用各种策略来查找共享的答案。真正的好处是,您要求用户在他们的答案中提供某种类型的剖析和他们自己的启示。这使得僵尸程序更难系统化。许多计算机开始在许多服务器和验证码表单上使用相同的答案,例如 我是1972年3:45出生的机器人。 这样,整个网络就可以对这种响应进行分析,并将其用于阻止僵尸程序,从而有效地使经过几次迭代后的自动化变得一文不值。 当我更多地思考这个问题时,执行一个基本的阅读理解测试来评论博客文章会很有趣。博客文章结束后,作者可以向读者提出问题。这个问题对于每个博客文章都是独一无二的,而且它还有一个额外的好处,那就是要求用户在评论之前实际阅读。你可以在文章的末尾用存储在服务器端的答案来写这个简单的问题,然后用一组无意义的问题来盐化数据库。 这篇文章讨论过紫色验证码技术吗?服务器端应答(错误,否) 这是关于Captchas的帖子吗?服务器端回答(正确,是) 这是关于迈克尔杰克逊的帖子吗?服务器端应答(错误,否) 以随机顺序提出几个问题,使顺序具有重要意义似乎很有用。例如,上面的内容将=否、是、否。改变顺序,将一些无意义的问题混合起来,回答"否"和"是"。 我一直在使用http://stopforumspam.com作为防御僵尸程序的第一道防线。在网站上,我已经实现了它,它可以阻止几乎所有的垃圾邮件发送者不使用验证码。 mixtriot.com使用一个ascii艺术验证码(不确定这是否是第三方工具)。
我认为文本验证码方法的问题在于,文本可以被解析,因此可以得到回答。 如果你的站点很受欢迎(比如stackoverflow),并且喜欢编码的人会挂在上面(比如stackoverflow),那么很有可能有人会把"破解验证码"作为一个挑战,用一些简单的javascript+greasemonkey很容易获胜。 因此,例如,一个隐藏的彩色字母方法建议在线程的某个地方(一个很酷的想法,想法,实际上),可以很容易地通过对以下示例行的简单分析来打破:
同上,解析这很容易:
如果它遵循模式(x+y)或类似模式。 同样,如果你有一系列的问题(
但是,现在太快了,而且太注重利润,即使是与我们选择的服务提供商打一通电话,对服务提供商来说也太贵了(时间是宝贵的)。 我们接受了大部分时间和机器交谈。 悲伤的时光… 如果你做了一个有不同颜色字母的验证码,并且要求用户只输入特定颜色的字母,那该怎么办? 谁说每次请求都必须在服务器上创建所有图像?也许你可以有一个静态的图像列表或者从Flickr中提取它们。我喜欢"点击小猫"的验证码。http://www.thepcspy.com/kittenauth 在我的博客上,我不接受评论,除非javascript打开,然后通过Ajax发布。它将所有机器人都拒之门外。我唯一收到的垃圾邮件来自人类垃圾邮件发送者(他们通常从网站复制和粘贴一些文本来生成评论)。 如果必须使用非javascript版本,请执行以下操作: 以下字符串[y]中[x]的[some operation] 如果给定一个足够复杂的用regex无法解决的[x]和[y],就很难编写一个解析器。 计算[狗,危险,可跳舞,猫]中的短单词数=2 [狗,危险,可跳舞,灾难]中最短的词是什么=狗 [鱼、米、箱、堆垛溢出]中以x结尾的单词是什么=箱 在[apple.com,stackoverflow.com,fish oil.com]中哪个URL是非法的=fish oil.com 所有这些都可以很容易地在服务器端完成;如果选项数量足够大并且频繁地旋转,那么很难获得所有选项,而且决不能每天给同一个用户一次以上的相同类型或其他类型的选项。 如果您希望使用基于ASCII的方法,请看一下集成figlet。您可以制作一些自定义字体,并对每个字符进行一些字体选择随机化,以增加entrophy。字距调整使文本在视觉上更令人满意,并且对于bot来说,逆向工程有点困难。 例如:
最好的验证码系统是滥用计算机科学中的p=np问题的系统。自然语言问题可能是这些问题中最容易被滥用的,也是最好的。任何问题都可以通过一个简单的谷歌查询和一点点检查来回答(即,我们太阳系的第二颗行星是什么?是个好问题,而2+2=?不是)在这种情况下是一个有价值的候选人。 这将是每次注册而不是每次发布,对吗?因为即使使用jquery自动化,这也会扼杀站点。 如果您在过去倾向于使用问答解决方案,我会向用户提供一个下拉列表,其中包含3-5个随机问题,用户可以从中进行选择,然后回答以证明他们是人类。列表在每次页面加载时的排序不同。 您是否曾经计划为StackOverflow提供一个API,允许以编程方式操作问题/答案?如果是这样的话,基于captcha的保护将如何适应这种情况? 通过Atom联合feeds提供丰富的只读界面,人们可以创建一些有趣的智能客户端/工具,用于组织和搜索StackOverflow的大量内容;我可以看到,除了Web界面之外,还具有提问和/或回答问题、投票和极其有用的功能。L.(尽管这可能不符合基于广告的收入模式。) 我更希望看到stackoverflow使用启发式监视方法,试图检测恶意活动并阻止有问题的用户,但可以理解使用captcha可能是一种更简单的方法,您的发布数据即将发布。 我编写了一个PHP类,可以让您选择使用某类验证码问题(数学、命名、对立、完成),或者随机化使用的类型。这些问题大多数讲英语的孩子都能回答。例如: 即使有了rep,仍然应该有某种类型的capcha,以防止恶意脚本攻击。 使用简单的文本验证码,然后要求用户向后输入答案,或者只输入第一个字母,或者最后一个,或者其他随机的东西。 另一个想法是制作一个这样的ASCII图像(从门户游戏结束序列):
给用户一些选择,比如:是一个,谎言,心碎,蛋糕。 如何使用样式化的HTML元素(如div)显示captchas?从矩形区域构建字母很容易,而且很难对其进行分析。 修复语法错误captcha:
括号和引号是随机删除的。 僵尸可以自动检查语法错误,但他们不知道如何修复这些错误! 我已经编了一个相当大的新闻网站,一直在搞验证码和分析垃圾邮件机器人。 我的所有解决方案都适用于中小型网站(就像本主题中的大多数解决方案一样)这意味着他们可以阻止垃圾邮件机器人发帖,除非他们为你的网站制定了一个特定的解决方案(当你大的时候)。 我发现一个很好的解决方案是垃圾邮件机器人在你发布文章48小时前不会访问你的文章。由于新闻网站上的一篇文章在发布48小时后获得了大部分的浏览量,它允许未注册的用户在不输入验证码的情况下发表评论。 我看到的另一个不错的验证码系统是由WebDesignBeach制造的。您有多个对象,必须将一个对象拖放到特定区域中。很有创意,不是吗? 我相信大多数的页面的建立与控制(按钮、链接等),支mouseovers。
这只是个不同的方法,在没有实际上用于实现这一方法。但这是不可能的。
Ajax的奇特的验证码是基于图像的,除非你有两个拖科技滴基于形识别的信,而不是typlng /数包含在图像。
我在运行一段时间的phpbb 2.0站点上发现了大量垃圾邮件问题(该站点现在已升级)。我在PBPBB论坛上安装了一个自定义的captcha mod,在一段时间内运行良好。我发现真正的解决方案是[在帐户创建页面上]将其与其他"必需"字段相结合。我补充说:地点和职业(平凡,但很容易知道)。机器人从未尝试填写这些,仍然假设验证码是每次尝试的失败点。 不是技术解决方案,而是理论解决方案。 1.给出单词或声音。"将鼠标移到屏幕左上角,单击橙色按钮"或单击此处,然后单击此处"(需要多步骤响应)任务完成后问题就解决了。选择已经在页面上的对象,让它们单击。至少完成两个操作。 希望这有帮助。 我的解决方案是将表单放在单独的页面上,并向其传递时间戳。在那个页面上,我只在时间戳有效时显示表单(不是太快,也不是太旧)。我发现机器人程序总是直接点击提交页面,只有人类才能正确导航。 如果您像现在这样将表单放在内容页上,将无法工作,但是您可以显示/隐藏基于Noscript的特殊提交页的链接。对这样一小部分用户来说是一个小小的不安。 不是最精致的反垃圾邮件武器,但嘿,微软支持: Nobot控制(AjaxControlToolkit的一部分)。
演示: http://www.asp.net/ajax/ajaxcontroltoolkit/samples/nobot/nobot.aspx 在任何基于问题的验证码中都要注意文化偏见。 智力测验中的偏倚 你看过瓦吉斯吗? "waegis是一个在线Web服务,它公开了一个开放式API(应用程序编程接口)。它通过API方法获取传入数据,并应用快速检查,及时识别垃圾邮件和合法内容。然后,它会将结果返回给客户机,以指定内容是否为垃圾邮件。" 如果没有一个真正的验证码作为你的第一道防线,你是否仍然容易受到垃圾邮件发送者编写浏览器脚本的攻击(使用vb和ie很简单)?例如,加载页面、浏览DOM、单击提交按钮、重复… 如果不将图像用于验证码的主要问题是创建这些图像的CPU负载,那么在CPU负载为"轻"时(相对而言),最好找出创建这些图像的方法。没有理由要求在生成表单的同时生成captcha图像。相反,您可以从Captchas的大缓存中提取,这是上次服务器负载"轻"时生成的。甚至可以重用缓存的captcha(以防表单提交中出现奇怪的峰值),直到下次服务器负载"轻"时重新生成一组新的captcha。 简单的数学不是答案-垃圾邮件发送者甚至不需要编写一个简单的解析器。谷歌会为他们做这件事,即使你用文字而不是数字,所以它只需要在谷歌上快速搜索就行了。 它也可以轻松地进行文本到数字的转换。 似乎在so的渲染中有某种缺陷,因为它只在发布时显示第一个链接,即使预览工作正常。第二个链接是-转到谷歌,搜索"1*42" 我的建议是使用ASCII验证码,它不使用图像,它是程序员/怪人。下面是一个PHP实现http://thephpro.com/products/captcha/这个是付费的。还有一个免费的PHP实现,但是我找不到一个例子->http://www.phpclasses.org/browse/package/4544.html 我知道这些都是用PHP编写的,但我相信你们聪明的人可以通过构建把它移植到你们最喜欢的语言上。 显示九个随机的几何图形,并要求用户选择两个正方形或两个圆之类的图形,怎么样?应该很容易写,也很容易使用。 没有什么比你不能正确阅读文本更糟糕的了… @罗布
|
最新内容
相关内容
python有map方法吗
python有map方法吗,培训,位置,数据,函数,列表,序列,参数,元素,方法,使用方法,python中的map:map()会根据提供的函数对指定序列做映射。第一个python类自带方法吗
python类自带方法吗,培训,方法,里面,实例,也就是说,下面,对象,以上,之后,参数,python中的类,创建好之后,里面是没有方法的,也就是说,类并没有自带python子类可以调用父类方法吗
python子类可以调用父类方法吗,培训,名称,资料,情况,地方,函数,参数,方法,表示,语句,python中的子类中的__init__()函数会覆盖父类的函数,一些python怎么理解Python的构造方法
python怎么理解Python的构造方法,代码,名字,培训,方法,参数,对象,以上,结尾,函数,开头,在创建类时,我们可以手动添加一个__init__()方法,该方法python怎么调用类方法
python怎么调用类方法,培训,方法,实例,静态,定义,参数,属性,对象,关键字,以上,python中的类用来描述具有相同的属性和方法的对象的集合。它定python判断字符串是否为小数的方法
python判断字符串是否为小数的方法,培训,代码,合法,小数点,小数,整数,字符串,方法,右边,左边,python想判断一个字符串是不是一个合法的小数,但python可以继承父类方法吗
python可以继承父类方法吗,培训,代码,名字,方法,动物,属性,编译器,这样的话,定义,里面,python继承,调用父类属性方法在python里面,继承一个类python函数的高级使用方法
python函数的高级使用方法,代码,函数,灵活,数据,培训,时间,定义,程序,赋值,变量,Python的函数是“一等公民”,因此函数本身也是一个对象,函数既python私有方法是什么
python私有方法是什么,培训,公开,代码,方法,属性,变量,函数,前面,成员,法名,Python默认的成员函数和成员变量都是公开的,Python私有属性和方法python字符串连接的方法有哪些
python字符串连接的方法有哪些,培训,字符串,基础,方式,两个,变量,函数,空白,语言,功能,python中有很多字符串连接方式,下面总结一下:最原始的字python字符串拼接有哪些方法?
python字符串拼接有哪些方法?,培训,一致,字符串,位置,异常,结果,方式,方法,字符,参数,python拼接字符串一般有以下几种方法:①直接通过(+)操作python创建多线程的两种方法
python创建多线程的两种方法,培训,第一,代码,业务,方法,线程,函数,任务,演示,实例,当我们使用python编程的过程中需要多个输出的任务的话,为了