为了账号安全,请及时绑定邮箱和手机立即绑定

实用的基于非图像的验证码方法?

实用的基于非图像的验证码方法?

扬帆大鱼 2019-07-09 16:10:29
实用的基于非图像的验证码方法?看来我们会增加卡普查支持堆栈溢出。这对于防止机器人、垃圾邮件发送者和其他恶意脚本活动是必要的。我们只想让人类在这里发布或编辑东西!我们将使用JavaScript(JQuery)CAPTCHA作为第一道防线:http:/docs.jquery.com/tutorials:Safer_Contact_Forms_Win_CAPTCHAs这种方法的优点是,对大多数人来说,验证码是看不见的!然而,对于禁用JavaScript的人,我们仍然需要一个退路,这是它变得棘手的地方。我写了一个ASP.NET的传统CAPTCHA控件我们可以重复使用。但是,我更愿意使用一些文本,以避免在服务器上使用每个请求创建所有这些映像的开销。我见过.。ASCII文本Captcha:\/\/(_)\/\/数学难题:什么是7减3乘2?琐碎的问题:什么味道更好,蟾蜍还是冰棒?也许我只是在向风车倾斜,但我想要一个资源密集的,非形象的。<noscript>如果可能的话兼容验证码。想法?
查看完整描述

3 回答

?
四季花海

TA贡献1811条经验 获得超5个赞

我开发的一种方法这似乎是完美的(尽管我可能没有你收到的评论垃圾邮件那么多),那就是有一个隐藏的字段,并用一个假的值填充它,例如:

<input type="hidden" name="antispam" value="lalalala" />

然后,我有一段JavaScript,它每秒钟用页面加载的秒数更新该值:

var antiSpam = function() {
        if (document.getElementById("antiSpam")) {
                a = document.getElementById("antiSpam");
                if (isNaN(a.value) == true) {
                        a.value = 0;
                } else {
                        a.value = parseInt(a.value) + 1;
                }
        }
        setTimeout("antiSpam()", 1000);}antiSpam();

然后,当表单提交时,如果反垃圾邮件的值仍然是“lalalala”,那么我将其标记为垃圾邮件。如果反垃圾邮件值是整数,我将检查它是否高于10(秒)。如果它低于10,我标记它为垃圾邮件,如果它是10或更多,我让它通过。

If AntiSpam = A Integer
    If AntiSpam >= 10
        Comment = Approved
    Else
        Comment = SpamElse
    Comment = Spam

其理论是:

  • 垃圾邮件机器人将不支持JavaScript并提交它所看到的
  • 如果bot支持JavaScript,它将立即提交表单
  • 在发帖之前,评论者至少已经阅读了部分页面。

这种方法的缺点是它需要JavaScript,如果您没有启用JavaScript,您的评论将被标记为垃圾邮件,但是,我确实会检查标记为垃圾邮件的注释,所以这不是问题

查看完整回答
反对 回复 2019-07-09
?
温温酱

TA贡献1752条经验 获得超4个赞

查看完整回答
反对 回复 2019-07-09
  • 3 回答
  • 0 关注
  • 560 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信