Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何防止在BOTCHE中自动更改验证码?_C#_Asp.net_Captcha - Fatal编程技术网

C# 如何防止在BOTCHE中自动更改验证码?

C# 如何防止在BOTCHE中自动更改验证码?,c#,asp.net,captcha,C#,Asp.net,Captcha,我已经在我的asp.net应用程序中实现了验证码。但是,每当页面中出现回发occours时,验证码就会发生变化。我怎样才能防止它改变 Asax页面: <botDetect:Captcha ID="bdCaptcha" runat="server" /> 我怎样才能做到这一点。你不能。我会写信告诉你为什么不(1),以及我认为你应该做什么(2): (1) 出于安全目的,BotDetect验证码只允许每个验证码进行一次验证尝试 如果我们允许对同一验证码进行多次重试,这将大大降低验证码的安

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

Asax页面:

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

我怎样才能做到这一点。

你不能。我会写信告诉你为什么不(1),以及我认为你应该做什么(2):

(1) 出于安全目的,BotDetect验证码只允许每个验证码进行一次验证尝试

如果我们允许对同一验证码进行多次重试,这将大大降低验证码的安全性,因为机器人程序可以强制执行不同的代码值,直到最终正确执行为止。此外,编写一个使用OCR技术绕过Captcha的机器人会容易得多:例如,如果它能识别图像中五位数字中的两位,它只需强制执行其余三位

因此,失败的验证尝试(无论是在客户端还是服务器端)总是使当前验证码无效。成功的服务器端验证也会删除代码(因此我们可以防止某些人只解决一个验证码,然后继续重复使用它进行多次提交)

(2) 我猜您的问题的根源是处理在Web表单的另一个(非验证码)字段上失败的验证。在这种情况下,您希望避免使用两次验证码来折磨您的访客

我们完全同意这一点,但解决方案不是改变验证码的行为,而是在解决后完全删除验证码。您可以在此处找到更多详细信息:

希望这有帮助

马里奥,
Captcha Inc.

实际上我不想这样做,因为我只是问了这个问题来解决我因验证码而面临的一个问题。因为你来自Captcha Inc.,我告诉你,如果我们不使用InProc会话,在Chrome和Firefox浏览器的情况下,会话Id会导致错误的验证码图像和正确的验证码声音(可能还有其他原因)。
protected void Page_PreRender(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                bdCaptcha.UserInputClientID = txtCaptchaInput.ClientID;
            }
        }