【问题标题】:How to build a secure captcha using jQuery UI Slider?如何使用 jQuery UI Slider 构建安全的验证码?
【发布时间】:2011-11-10 10:54:18
【问题描述】:

我想使用一个滑块为我的注册构建一个精美且易于使用的验证码,用户可以在该滑块上证明他是一个人类并且没有脚本。

到目前为止,我使用 jQuery UI Slider 实现了滑块,如果值为 100,则会出现提交按钮。看起来不错,我对这种行为感到满意。

但是由于 JS 是由客户端执行的,所以每个人都可以看到我的代码,并且可以通过使用脚本来触发相同的操作。对于脚本,按钮是否可用没有区别。脚本只发布数据来提交表单,我的滑块验证码没用。

我的简单 JS 代码:

$(function() {
        $( "#slider" ).slider({
            value:0,
            min: 0,
            max: 100,
            step: 50,
            slide: function( event, ui ) {
                if(ui.value == 100){
                    $( "#amount" ).val( "human" );
                    $("#regButton").slideDown();
                } else if (ui.value == 50) {
                    $( "#amount" ).val( "nerd" );
                    $("#regButton").slideUp();
                } else {
                    $( "#amount" ).val( "script" );
                    $("#regButton").slideUp();
                }
            }
        });
        $("#regButton").hide();
        $( "#amount" ).val( "Script" );
    });

HTML:

<label for="amount" style="text-align:right;">I'm a:</label>
        <input type="text" id="amount" style="border:0; color:#f6931f; font-weight:bold; width: 197px;" />
        <div id="slider"></div>

是否有可能构建验证码保护程序?使用服务器端哈希?设置标志?使用精美的用户界面和比输入字母更多的用户体验来存档安全性的做法是什么。

我在服务器端使用带有 Spring MVC 的 Java EE。使用滑块而不是 reCaptcha 会很好。


编辑:我在滑块逻辑中添加了一个哈希值。在开始服务器呈现一个带有注册开始日期的隐藏字段时,服务器基于该日期构建一个 md5-hash。滑块是否移动了一个函数被调用,它读取隐藏字段的值并构建一个 md5-hash,也是。哈希值将被发送到服务器,并在提交注册之前与哈希的服务器值进行比较。不像文本验证码那样省钱,但比什么都不做更有效。

我发现了这个:https://code.google.com/p/slidelock/

你怎么了?这家伙如何构建一个“安全”的滑块?他如何管理服务器端验证和 SALT?脚本编写者破解它是安全的还是更昂贵?

【问题讨论】:

  • 链接到一个停放的域
  • 谢谢,我加了一个新的。

标签: jquery jquery-ui captcha salt


【解决方案1】:

为什么不使用现有的验证码组件而不是自己编写?

那里有很多。我会推荐http://www.google.com/recaptcha,它是免费的,有助于图书数字化。

【讨论】:

  • 第一个原因是我的服务器上需要所有内容,其次是一个不错的解决方案,它不乏味,即使在注册表中也能提供一些用户体验。是的,我知道 reCaptcha 是可靠且可定制的,并且支持不同的语言。我想知道如何构建验证码,应该有谷歌以外的人知道如何:)
  • 我想添加reCaptcha也有助于同时对书籍进行数字化,这非常简洁。所以验证码实际上是为了保护您的网站以外的目的。
  • 移动设备上的标准验证码非常糟糕。滑块方法很有吸引力,但需要增强安全性。
【解决方案2】:

草率下结论并发布了我不应该发布的内容,抱歉。

我完全理解您想要定制它的愿望,尤其是当它很容易做到的时候。但我认为使用滑块验证码没有任何内在错误,只要它不是保护表单/应用程序的唯一方法。我认为它可以很容易地扩展为具有唯一标识符,而且我认为它在易用性方面要优越得多。在我对其进行测试和研究之后,我计划在未来的应用程序中使用它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多