MSCAPTCHA的安全问题

时间:2012-02-07 05:44:41

标签: captcha

我在我的一个项目中使用MSCAPTCHA。  现在我知道Captchas他们的角色依赖于他们的图像URL可以很容易地被黑客传递。 我的意思是,如果我们复制验证码图像网址并在新的浏览器窗口中打开它并刷新它将生成相同的字符。 和黑客有办法使用这个bug。怎么样 ?他们写了一个小程序,请求我们的页面,除了验证码,然后他们使用第一个验证码图像网址。他们通过了验证码。 (我在某个地方看过这个,我也不知道细节)

现在有任何想法如何解决这个问题?或者没有这个问题的验证码?

2 个答案:

答案 0 :(得分:0)

也许有些事情要回避这个问题,同时仍然要解决人类与机器人验证的基本要求,即验证码填充?

我实现了我自己的一些人类读者应该能够阅读的东西。我会问他们

“我有AA石头,我更多地收集BB。我现在总共有[textbox_here]个宝石。”

伪代码如下:

Random rand = new Random();
int intNums[] = {0,1,2,3,4,5,6,7,8,9};
string strNums[] = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
int aIndex = rand.Next(0,4); // 0, inclusive, 5 exclusive
int bIndex = rand.Next(0,4);

// 1. use AA and BB below to print your HTML form
string AA = strNum[aIndex]; 
string BB = strNum[bIndex];

// 2. save/pass out "rightAnswer" to later verify 
// the users answer from the textbox
int rightAnswer = aIndex + bIndex;

我更喜欢这个,因为它很轻,没有外部依赖,到目前为止它都有效(没有垃圾邮件)。您还可以尝试一系列问题和答案,如

string questionArray[] = { "My mother has only one son. Am I male or female?", ... };
string answerArray[] = { "male", ... };

你明白了......

希望它有所帮助!

答案 1 :(得分:0)

我特别不了解MSCAPTCHA,但您似乎误解了验证码如何解决。是的,每个验证码图像都有一个唯一的URL。这很好,无关紧要。验证码所属的表单具有某种信息,需要用户解决特定的验证码。用户不能简单地回答他想要的任何随机验证码。

在准备呈现给用户的表单时,服务器会生成验证码并在内部将预期答案保存在用户的会话中。然后,它将具有表单的特定验证码图像的链接发送给用户。如果返回的答案不符合预期,则拒绝解决方案。如果用户试图查看其他验证码而不是服务器发送的验证码,则无关紧要。

相关问题