gpt4 book ai didi

javascript - 通过 JavaScript 验证 PHP 验证码

转载 作者:行者123 更新时间:2023-12-02 17:03:08 24 4
gpt4 key购买 nike

我正在运行 PHP 脚本,它以这种方式生成验证码。

<img src="http://examle.com/captcha_code_file.php?rand=1846368456" name="6_letters_code" id="captchaimg"> 

我正在使用此代码来获取兰特值:

var src = a.src;
var match = src.match(/rand=(\d+)$/);
var rand = match.length > 1 ? match[1] : null;

我在将此值 1846368456 与屏幕上的字母(例如 AY231X)进行比较时遇到问题。换句话说,这两个值不匹配。那么是否可以使用 JavaScript 将用户输入的表单与 rand 值进行比较

最佳答案

基本上,如果您显示验证码图像captcha_code_file.php,您就会生成一个要显示的代码。

将此代码保存在用户 session 中。如果您的表单已发送,您将检查验证码是否在 session 中。

rand=1846368456 参数只是为了确保您看到最新生成的图片,而不是某些缓存的图片。

如何查看JS中的代码?

您可以提供一个 checkCaptcha.php,它基本上在 session 中进行查找,并回显 truefalse。在发送表单之前,您可以对其进行 Ajax 调用。

checkCaptcha.php?code=foobar

$code = isset($_GET['code']) ? $_GET['code'] : '';
$sessionCode = isset($_SESSION['captchacode']) : $_SESSION['captchacode'] : '';
if (empty($code) || $code !== $sessionCode) {
die('FALSE');
}
die ('TRUE');

Ajax :

var captchacode = 'foobar'; //Read from Input
$.get("checkCaptcha.php?code=" + captchacode, function( data ) {
if (data == 'FALSE') {
alert('Error with Captcha');
}
});

在提交表单时,您应该清除“已使用”的验证码。

安全性如何?

我们总是在服务器端检查验证码。此ajax仅用于用户体验。

我认为该解决方案不会提供安全漏洞。

单个帖子更容易:

$success = false

while(!$sucess) {
$code = tryReadCode();
$result = attackPageViaPost($code);
$success = str_pos('Congrats, you successfuly entered the captcha', $result) !== false;
}

然后

$success = false

while(!$sucess) {
$code = tryReadCode();
$success = getAjaxResult($code);
}

attackPageViaPost($code)

关于javascript - 通过 JavaScript 验证 PHP 验证码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25512340/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com