我在我的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;
}
}
我怎样才能实现这一点。
答案 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。