Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk melaksanakan kod pengesahan dan mencegah serangan bot dalam projek PHP?

Bagaimana untuk melaksanakan kod pengesahan dan mencegah serangan bot dalam projek PHP?

WBOY
WBOYasal
2023-11-03 17:40:561081semak imbas

Bagaimana untuk melaksanakan kod pengesahan dan mencegah serangan bot dalam projek PHP?

Bagaimana untuk melaksanakan kod pengesahan dan mencegah serangan robot dalam projek PHP?

Dengan perkembangan dan populariti Internet, semakin banyak laman web dan aplikasi mula diancam oleh serangan bot. Untuk melindungi keselamatan maklumat pengguna dan memberikan pengalaman pengguna yang baik, pembangun perlu melaksanakan kod pengesahan dan langkah-langkah untuk mencegah serangan bot dalam projek mereka. Artikel ini akan memperkenalkan cara melaksanakan kod pengesahan dan mencegah serangan bot dalam projek PHP.

1. Pelaksanaan kod pengesahan
Kod pengesahan ialah kaedah biasa untuk menghalang serangan robot. Pengguna perlu memasukkan kod pengesahan semasa log masuk atau mendaftar untuk mengesahkan identiti mereka.

  1. Jana imej kod pengesahan
    PHP menyediakan pelbagai fungsi pemprosesan grafik yang boleh digunakan untuk menjana imej kod pengesahan. Berikut ialah contoh kod:
session_start();
$code = rand(1000,9999);
$_SESSION['code'] = $code;

$width = 100; // 验证码图片宽度
$height = 30; // 验证码图片高度
$image = imagecreatetruecolor($width, $height);

$bgColor = imagecolorallocate($image, 255, 255, 255);
$textColor = imagecolorallocate($image, 0, 0, 0);

imagefilledrectangle($image, 0, 0, $width, $height, $bgColor);

imagettftext($image, 20, 0, 10, $height/2, $textColor, 'path/to/font.ttf', $code);

header('Content-Type: image/png');
imagepng($image);
imagedestroy($image);
  1. Sahkan input pengguna
    Apabila pengguna menyerahkan borang, bandingkan kod pengesahan yang dimasukkan oleh pengguna dengan kod pengesahan yang dijana untuk menentukan sama ada input pengguna adalah betul. Berikut ialah contoh kod:
session_start();
$code = $_SESSION['code'];

$userInput = $_POST['code'];

if ($userInput == $code) {
    // 验证码输入正确,继续处理用户提交的数据
} else {
    // 验证码输入错误,给用户一个提示
    echo "验证码输入错误";
}

2. Pelaksanaan mencegah serangan robot
Kod pengesahan hanya boleh menghalang serangan robot mudah Untuk mencegah serangan robot dengan lebih baik, kami juga boleh mengambil langkah berikut:

  1. Tambah medan tersembunyi.
    Tambahkan medan tersembunyi pada borang dan semak pada bahagian pelayan jika nilai medan itu kosong. Memandangkan bot selalunya mengisi medan borang secara automatik, mereka mengisi medan ini juga, mendedahkan identiti bot mereka.
<input type="hidden" name="isHuman" value="">
if (!empty($_POST['isHuman'])) {
    // 非机器人提交,继续处理用户提交的数据
} else {
    // 机器人提交,停止处理并给用户一个提示
    echo "请不要使用机器人进行提交";
}
  1. Semak kekerapan permintaan
    Tentukan sama ada pengguna adalah robot berdasarkan kekerapan permintaan pengguna. Sebagai contoh, jika alamat IP secara berterusan menghantar sejumlah besar permintaan dalam tempoh yang singkat, ia boleh ditentukan sebagai robot. Anda boleh merekodkan cap masa dan alamat IP permintaan pengguna, dan kemudian merumuskan dasar yang sepadan berdasarkan keperluan sebenar.
session_start();
$ip = $_SERVER['REMOTE_ADDR'];
$timestamp = time();

$requests = $_SESSION['requests'];
if (!$requests) {
    $requests = [];
}

// 添加新的请求记录
$requests[] = ['ip' => $ip, 'timestamp' => $timestamp];

// 清理过期的请求记录
foreach ($requests as $key => $request) {
    if ($timestamp - $request['timestamp'] > 60) {
        unset($requests[$key]);
    }
}

$_SESSION['requests'] = $requests;

if (count($requests) > 10) {
    // 用户请求频率过高,判定为机器人攻击,给用户一个提示
    echo "您的请求过于频繁,请稍后再试";
} else {
    // 用户请求正常,继续处理用户提交的数据
}

Melalui aplikasi gabungan langkah-langkah di atas, kesan kod pengesahan dan mencegah serangan robot boleh dicapai dengan lebih baik dalam projek PHP. Pembangun boleh melaraskan borang dan peraturan pengesahan kod pengesahan secara fleksibel, serta syarat penentuan serangan robot mengikut keperluan khusus, untuk meningkatkan keselamatan sistem dan pengalaman pengguna.

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan kod pengesahan dan mencegah serangan bot dalam projek PHP?. 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