如何防止BotDetect验证码中验证码的自动更改?

时间:2014-03-19 06:21:33

标签: c# asp.net captcha

我在我的asp.net应用程序中实现了botdetect验证码。但是,只要页面中的回发出现,验证码就会发生变化。我怎样才能防止它改变。

Asax页面:

<botDetect:Captcha ID="bdCaptcha" runat="server" />

.CS页面:

protected void Page_PreRender(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                bdCaptcha.UserInputClientID = txtCaptchaInput.ClientID;
            }
        }

我怎样才能实现这一点。

1 个答案:

答案 0 :(得分:1)

你做不到。我会写下你为什么不(1),以及我认为你应该做的事情(2):

(1)出于安全考虑,BotDetect Captcha仅允许每个Captcha代码进行一次验证尝试。

如果我们允许多次重试解决相同的Captcha,它会显着降低Captcha安全性,因为机器人可能只是暴力强制不同的代码值,直到它们最终正确。另外,编写一个使用OCR技术绕过Captcha的机器人要容易得多:例如,如果它可以识别图像中的五个数字中的两个,那么它只需要暴力破坏剩下的三个数字。

因此,失败的验证尝试(无论是在客户端还是服务器端)总是使当前的Captcha代码无效。成功的服务器端验证也会删除代码(因此我们会阻止有人解决一个Captcha然后不断重复使用它的情况)。

(2)我猜你的问题的根源是处理你的webform的另一个(非验证码)字段失败的验证。在这种情况下,您希望避免折磨您的访客,解决Captcha两次。

我们完全同意这一点,但解决方案不是要改变Captcha行为,而是要在解决后彻底删除Captcha。您可以在这里找到更多详细信息: http://captcha.com/doc/aspnet/faq/captcha-validation-security-faq.html#validation-repeat

希望这有帮助。

马里奥, Captcha Inc。