这可能是一个微不足道的问题,如果是的话,对不起。但我试图寻找答案,但却无法得到令人信服的答案 我最近访问了一个需要登录的网站,看到它使用以下JS代码设置了CAPTCHA:
function Captcha(){
var alpha = new Array('A','B','C','D',.....,'1',...,'9');
var i;
for (i=0;i<4;i++){
var a = alpha[Math.floor(Math.random() * alpha.length)];
var b = alpha[Math.floor(Math.random() * alpha.length)];
var c = alpha[Math.floor(Math.random() * alpha.length)];
var d = alpha[Math.floor(Math.random() * alpha.length)];
var e = alpha[Math.floor(Math.random() * alpha.length)];
var f = alpha[Math.floor(Math.random() * alpha.length)];
var g = alpha[Math.floor(Math.random() * alpha.length)];
}
var code = a + '' + b + '' + '' + c + '' + d + '' + e;
document.getElementById("mainCaptcha").value = code
}
在主体中有一个id为“mainCaptcha”的标签。
<input size="10" name="autocap" id="mainCaptcha" readonly="">
由于所有这些都发生在客户端,我认为应该可以通过脚本获取CAPTCHA值。如果可能的话,请建议一种方法。
答案 0 :(得分:0)
您可以使用document.getElementById("mainCaptcha").value
来检索CAPTCHA的值。这是实施CAPTCHA的一种非常不安全的方式。所以做正确的事情并通知网站所有者关于这个非常糟糕的CAPTCHA实施。
答案 1 :(得分:0)
这是使用Captcha最不安全的方法原因很简单,验证码用于添加额外的安全层。您可以使用黑客/刮刀无法直接获得的扭曲图像来保护您的网站。我建议继续使用最佳实践,在服务器上生成图像并转发给客户端或试用Google reCaptcha
或任何其他验证码生成工具
答案 2 :(得分:0)
<html>
<head>
<script type="text/javascript">
function Captcha(){
var alpha = new Array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z');
var i;
for (i=0;i<6;i++){
var a = alpha[Math.floor(Math.random() * alpha.length)];
var b = alpha[Math.floor(Math.random() * alpha.length)];
var c = alpha[Math.floor(Math.random() * alpha.length)];
var d = alpha[Math.floor(Math.random() * alpha.length)];
var e = alpha[Math.floor(Math.random() * alpha.length)];
var f = alpha[Math.floor(Math.random() * alpha.length)];
var g = alpha[Math.floor(Math.random() * alpha.length)];
}
var code = a + ' ' + b + ' ' + ' ' + c + ' ' + d + ' ' + e + ' '+ f + ' ' + g;
document.getElementById("mainCaptcha").value = code
}
function ValidCaptcha(){
var string1 = removeSpaces(document.getElementById('mainCaptcha').value);
var string2 = removeSpaces(document.getElementById('txtInput').value);
if (string1 == string2){
return true;
}
else{
return false;
}
}
function removeSpaces(string){
return string.split(' ').join('');
}
</script>
</head>
<body onload="Captcha();">
<table>
<tr>
<td>
<h3>Text Captcha 'Yashpal Thakur'<h3><br />
</td>
</tr>
<tr>
<td>
<input type="text" id="mainCaptcha"/>
<input type="button" id="refresh" value=" Please Refresh" onclick="Captcha();" />
</td>
</tr>
<tr>
<td>
<input type="text" id="txtInput"/>
</td>
</tr>
<tr>
<td>
<input id="Button1" type="button" value="Please Check" onclick="alert(ValidCaptcha());"/>
</td>
</tr>
</table>
</body>