大多数网站至少采用服务器访问日志检查和禁止以及某种机器人预防措施,如CAPTCHA(那些混乱的文本图像)。
CAPTCHA的问题在于它们可能对用户体验构成威胁。幸运的是,它们现在具有用户友好的功能,如刷新和音频版本。
无论如何,像linux vs windows一样,垃圾邮件发送者自定义和/或构建脚本以处理仅属于一个站点的自定义CAPTCHA示例是不值得的。因此,我想知道是否有更好的方法来处理整个CAPTCHA事情。
在A Better CAPTCHA Peter Bromberg提到,一种方法是将图像转换为HTML并将其显示在页面中。在http://shiflett.org/ Chris只是要求用户在输入中键入他的名字。这样的例子是简化CAPTCHA体验同时降低垃圾邮件发送者价值的方法。有没有人知道我可以使用的更好的例子,或者看到嵌入式图像的任何问题?
答案 0 :(得分:9)
以HTML表格呈现的图像只是一个技术速度提升。从这样的文档中提取像素没有困难。
恕我直言CAPTCHA把重点放在一个错误的事情上 - 你不感兴趣的是另一方是否有人。您也不希望 human 向您发送垃圾邮件。所以退后一步,专注于垃圾邮件:
查看Sblam!的源代码(这是一个完全透明的服务器端评论垃圾邮件过滤器)。
答案 1 :(得分:2)
验证码的替代方案是从其他角度考虑问题。这样做的原因是因为验证码是围绕人和计算机角色可以区分的想法而建立的。随着人工智能的发展,随着计算机与人类用户之间的差距缩小,这将成为一个越来越难的问题。
此处使用slashdot的技术是为网站的其他用户充当守门人,标记滥用和删除违规帖子,然后广泛的受众才会注意到。
另一种技术是直接检测类似垃圾邮件的帖子,使用与从电子邮件中过滤垃圾邮件相同的技术。显然,它不是100%有效的电子邮件,也不会用于其他用途,但如果您可以过滤掉75%的垃圾邮件,并且很少有误报被过滤,那么其他技术只需要处理其余的25%。
记录与垃圾邮件相关的活动,以便您可以跟踪有关违规IP地址,帖子内容,声明的用户代理等的趋势,以便您可以在路由级别阻止滥用用户。
在几乎所有情况下,您的用户宁愿忍受滥用预防的轻微不便,而不是主要垃圾邮件问题的巨大不便。
最终,您和垃圾邮件发送者之间的军备竞赛是成本效益之一。最初,垃圾邮件发送者几乎不会向您的网站发送垃圾邮件,但您可以更改它以使其变得非常困难。即使他们继续向您的网站发送垃圾邮件,他们收到的好处也永远不会超过一些无辜的用户。一旦垃圾邮件的成本急剧上升超过收益,垃圾邮件发送者就会消失。
另一种受益的方法是允许在您的网站上投放广告。让它便宜(当然不是免费的),并且合法的广告商可以轻松地发布负责任的营销材料供您的用户查看。垃圾邮件发送者可能会发现,只需支付几美元并获得他们的产品比追求秘密方法更好。
显然,大多数垃圾邮件发送者都不适合此类别,因为这通常更多的是让您的用户成为恶意软件攻击的受害者。您可以通过让用户使用现代的,最新的浏览器或插件来做到这一点,这样他们就不那么容易受到这些漏洞攻击了。
答案 2 :(得分:2)
This article描述了一种基于散列字段名称(随每个页面视图一起更改)的技术,其中一些是蜜罐字段(即,如果请求被填充则拒绝请求),这些字段通过各种方式对人类用户隐藏技术。
基本上,它依赖于垃圾邮件脚本不够复杂,无法确定哪些表单字段实际可见。在某种程度上, 是一个CAPTCHA,因为为了可靠地解决它,他们不仅需要完全实现HTML,CSS和JavaScript,他们还必须识别字段何时也是如此小看,彩色和背景一样,隐藏在另一个场后面,放在浏览器的视口外面等。
这是makes Web Standards a farce的基本问题:没有算法来确定网页是否“看起来正确” - 只有人才可以决定。
答案 3 :(得分:2)
答案 4 :(得分:1)
我真的认为黛娜击中了头部。事实似乎是整个CAPTCHA设置的美妙之处在于没有标准。标准化只会有助于市场更有利可图。
因此,处理CAPTCHA问题的最佳方法似乎是提出一个相当硬的系统,让机器人能够捕获到地球上任何其他人都没有使用的系统。它可能是一个问题系统,一个非常自定义的图像创建者,甚至是只有浏览器尊重的JS调用组合。
当您的网站足够大,让垃圾邮件发送者关注时,您应该有预算来重新考虑您的CAPTCHA设置并进行更多优化。与此同时,我们应该监控我们的服务器日志并禁止坏代理,引用和IP。
在我的情况下,我创建了一个CAPTCHA图像,我认为它与我见过的任何其他CAPTCHA都非常不同。这应该在我的Apache日志+ htaccess禁止和Aksimet检查方面做得很好。也许我应该花时间在报告功能上。
答案 5 :(得分:0)
虽然不是真正的图像验证码,但良好的图灵测试正在向用户提出一个随机的问题 - 常见的选择是:冰热还是冷? 5 + 2 = ..?等