如何使用vbscript创建动态验证码

时间:2012-10-25 11:05:41

标签: asp-classic captcha

验证码中通常出现的情况是显示单个单词,用户只需输入该单词即可验证验证码。但在这种情况下,我想要的是我的验证码将包含一个口号(这是一个句子),并且每次计算机都会问... 输入口号中的第一个单词.. 下次询问时,随机输入第三个字等等...... 任何人都可以告诉我这是怎么回事?

1 个答案:

答案 0 :(得分:0)

以下是我过去在Classic ASP中创建CAPTCHA的方法。当表单显示给用户时,我会生成一个随机数字以及一个问题和答案。

随机数用作存储问题答案的会话变量的名称。我还添加了一个隐藏字段,其中包含随机数的值。此随机数允许一个用户在不使用相同会话变量的情况下在不同窗口/选项卡中显示多个表单。这也意味着任何试图破解页面的人都必须先检索页面,然后才能发布到页面上,这样会使攻击变得更加困难。

当用户提交表单时,我得到隐藏字段值,然后获取存储在会话变量中的答案,并删除会话变量,以便'机器人无法多次尝试猜测答案。然后可以将用户的答案与用户输入的内容进行比较。如果他们没有弄清楚,那么表格会再次显示,并生成新的随机数和答案。

生成表单时的代码如下所示:

'get your question and answer
strQuestion = "My question"
strAnswer = "answer"

Randomize
strVarName = Int((999999 - 100000 + 1) * Rnd() + 100000)
Session(strVarName) = strAnswer



<input type="hidden" name="varname" value="<%= strVarName %>" />

表单插入时的代码应该是这样的:

strVarName = Request.Form("varname")
strUserAnswer = Request.Form("answer")
strRealAnswer = Session(strVarName)
Session.Items.Remove(strVarName)

If strUserAnswer <> strRealAnswer Then
    'invalid response
    'show form again with new answer and session
End If