Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menggunakan captcha dalam bentuk PHP untuk mengelakkan serangan automasi?

Bagaimana untuk menggunakan captcha dalam bentuk PHP untuk mengelakkan serangan automasi?

WBOY
WBOYasal
2023-08-25 22:13:461273semak imbas

Bagaimana untuk menggunakan captcha dalam bentuk PHP untuk mengelakkan serangan automasi?

Bagaimana untuk menggunakan kod pengesahan dalam borang PHP untuk mengelakkan serangan automasi?

Dengan perkembangan Internet, serangan automatik telah menjadi cabaran utama kepada keselamatan rangkaian. Untuk melindungi keselamatan tapak web, banyak tapak web menggunakan kod pengesahan untuk pengesahan semasa proses penyerahan borang. Artikel ini akan memperkenalkan cara menggunakan PHP untuk melaksanakan kod pengesahan borang untuk mengelakkan serangan automatik.

Pertama, kita perlu menambah kotak input kod pengesahan pada halaman borang, menjana kod pengesahan rawak di latar belakang dan menyimpannya dalam Sesi pengguna. Apabila pengguna menyerahkan borang, mereka perlu mengesahkan sama ada kod pengesahan yang dimasukkan adalah konsisten dengan yang disimpan dalam Sesi. Berikut ialah contoh mudah:

<?php
// 生成随机验证码
function generateCaptcha() {
    $captcha = rand(1000, 9999); // 生成一个4位数的随机验证码
    $_SESSION['captcha'] = $captcha; // 将验证码保存在Session中
    return $captcha;
}

// 输出验证码到页面
function outputCaptcha() {
    $captcha = generateCaptcha();
    echo '<img src="captcha.php" alt="验证码">';
}

// 验证表单提交的验证码是否正确
function validateCaptcha($captcha) {
    if (isset($_SESSION['captcha']) && $_SESSION['captcha'] == $captcha) {
        return true;
    } else {
        return false;
    }
}
?>

<form method="POST" action="submit.php">
    <label for="name">姓名:</label>
    <input type="text" id="name" name="name" required>

    <label for="email">邮箱:</label>
    <input type="email" id="email" name="email" required>

    <label for="captcha">验证码:</label>
    <input type="number" id="captcha" name="captcha" required>

    <?php outputCaptcha(); ?>

    <button type="submit">提交</button>
</form>

Dalam kod di atas, kami mentakrifkan tiga fungsi: generateCaptcha() digunakan untuk menjana kod pengesahan rawak dan menyimpannya ke Sesi, outputCaptcha( ) digunakan untuk mengeluarkan kod pengesahan ke halaman dan validateCaptcha() digunakan untuk mengesahkan sama ada kod pengesahan yang dimasukkan oleh pengguna adalah betul. generateCaptcha()用来生成随机验证码并保存到Session中,outputCaptcha()用来将验证码输出到页面,validateCaptcha()用来验证用户输入的验证码是否正确。

然后,我们需要创建一个名为captcha.php的文件来输出验证码的图片。以下是一个简单的示例:

<?php
session_start();

header('Content-Type: image/png');

$captcha = $_SESSION['captcha'];

$im = imagecreatetruecolor(100, 30);
$bgColor = imagecolorallocate($im, 255, 255, 255);
$textColor = imagecolorallocate($im, 0, 0, 0);

imagefill($im , 0 , 0 , $bgColor);
imagestring($im, 5, 10, 10, $captcha, $textColor);

imagepng($im);
imagedestroy($im);
?>

captcha.php文件中,我们先使用imagecreatetruecolor()创建一个100x30像素的真彩色图片,在图片上填充一个白色背景,然后使用随机生成的验证码在图片上输出黑色文本。最后,我们使用imagepng()将图片输出到页面上。

在用户提交表单后,我们需要在后台验证用户输入的验证码是否正确。以下是一个简单的submit.php

Kemudian, kita perlu mencipta fail bernama captcha.php untuk mengeluarkan imej kod pengesahan. Berikut ialah contoh mudah:

<?php
session_start();
$captcha = $_POST['captcha'];

if (validateCaptcha($captcha)) {
    // 验证码正确,继续处理表单数据
    echo '验证码正确!';
    // 处理表单数据的逻辑 ...
} else {
    // 验证码错误,返回错误提示
    echo '验证码错误!';
}
?>

Dalam fail captcha.php, kami mula-mula menggunakan imagecreatetruecolor() untuk mencipta imej warna sebenar 100x30 piksel dan mengisi imej A latar belakang putih dan kemudian output teks hitam pada imej menggunakan kod pengesahan yang dijana secara rawak. Akhir sekali, kami menggunakan imagepng() untuk mengeluarkan imej ke halaman.

Selepas pengguna menyerahkan borang, kami perlu mengesahkan di latar belakang sama ada kod pengesahan yang dimasukkan oleh pengguna adalah betul. Berikut ialah contoh fail submit.php mudah: 🎜rrreee🎜Dengan kod di atas, kami boleh menggunakan kod pengesahan dalam borang PHP untuk mengelakkan serangan automatik. Pengguna perlu memasukkan kod pengesahan yang betul secara manual untuk menyerahkan borang, yang meningkatkan keselamatan tapak web. Pada masa yang sama, kami juga memastikan keunikan dan kesahihan kod pengesahan dengan menyimpannya dalam Sesi. 🎜🎜Sudah tentu, kod pengesahan hanyalah satu cara untuk menghalang serangan automatik dan tidak boleh menghalang sepenuhnya semua serangan berniat jahat. Tetapi dengan menggabungkannya dengan langkah keselamatan lain, kami boleh melindungi tapak web kami dengan lebih baik dan mengurangkan risiko serangan automatik. 🎜

Atas ialah kandungan terperinci Bagaimana untuk menggunakan captcha dalam bentuk PHP untuk mengelakkan serangan automasi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn