Rumah pembangunan bahagian belakang tutorial php Kaedah penjanaan kod pengesahan PHP dan penyelesaian kepada masalah biasa

Kaedah penjanaan kod pengesahan PHP dan penyelesaian kepada masalah biasa

Jun 09, 2023 am 10:17 AM
php Kod pengesahan penyelesaian

Dengan pembangunan Internet yang berterusan, orang ramai memberi perhatian yang lebih kepada perlindungan data Operasi seperti log masuk dan pendaftaran tapak web perlu disahkan oleh kod pengesahan untuk mengelakkan serangan dan pendaftaran mesin berniat jahat. Hari ini saya akan berkongsi dengan anda kaedah penjanaan kod pengesahan PHP dan penyelesaian kepada masalah biasa.

1. Kaedah penjanaan kod pengesahan

  1. Gunakan perpustakaan PHP GD untuk menjana kod pengesahan imej

Pustaka GD ialah perpustakaan pemprosesan grafik dalam PHP yang menyediakan Banyak fungsi operasi grafik. Dengan menggunakan perpustakaan GD, kami boleh menjana kod pengesahan imej dengan cepat.

Langkah-langkahnya adalah seperti berikut:

① Mulakan kanvas: Fungsi imagecreatetruecolor() boleh mencipta kanvas warna sebenar mengikut parameter yang ditentukan. Contohnya, imagecreatetruecolor(120, 40) mencipta kanvas truecolor 120x40 piksel.

② Lukis latar belakang gangguan: Gunakan fungsi imagerectangle() untuk melukis beberapa garisan gangguan dalam gelung untuk menjadikan kod pengesahan lebih sukar untuk dikenali oleh mesin.

③ Hasilkan rentetan rawak: Gunakan fungsi rawak (rand() dan mt_rand()) untuk menjana rentetan rentetan rawak sebagai aksara dalam imej kod pengesahan.

④ Lukis aksara kod pengesahan pada kanvas: Gunakan fungsi imagechar() untuk melukis rentetan rawak pada kanvas.

⑤ Output imej kod pengesahan ke penyemak imbas: gunakan fungsi header() untuk menetapkan Content-Type kepada image/png atau image/jpeg, dan gunakan fungsi imagepng() atau imagejpeg() untuk output kanvas ke pelayar untuk paparan.

Berikut ialah kod penjanaan kod pengesahan pustaka PHP GD yang ringkas:

<?php
session_start();
// 创建画布
$img = imagecreatetruecolor(120, 40);
//生成干扰线
for ($i = 0; $i < 5; $i++) {
    $color = imagecolorallocate($img, rand(0, 255), rand(0, 255), rand(0, 255));
    imageline($img, rand(0, 120), rand(0, 40), rand(0, 120), rand(0, 40), $color);
}
//生成随机验证码
$code = '';
for ($i = 0; $i < 4; $i++) {
    $code .= rand(0, 9);
}
//绘制验证码
$font = 'arial.ttf';
$text_color = imagecolorallocate($img, rand(0, 255), rand(0, 255), rand(0, 255));
imagettftext($img, 18, rand(-10, 10), 10, 24, $text_color, $font, $code);
//输出验证码图片到浏览器
header('Content-Type: image/png');
imagepng($img);
imagedestroy($img);
//将生成的验证码存储到Session中
$_SESSION['code'] = $code;
?>
Salin selepas log masuk

2 Gunakan pustaka PHP GD untuk menjana kod pengesahan berangka

Kod pengesahan berangka dicampur dengan. berkenaan dengan CAPTCHA abjad angka adalah lebih ringkas dan lebih mudah difahami, jadi banyak tapak web menggunakan CAPTCHA berangka. Berikut ialah contoh kod yang menggunakan pustaka PHP GD untuk menjana kod pengesahan digital:

<?php
session_start();
// 创建画布
$image = imagecreatetruecolor(120, 40);
// 生成干扰背景
$gray = imagecolorallocate($image, 200, 200, 200);
imagefill($image, 0, 0, $gray);
for ($i = 0; $i < 50; $i++) {
    $black = imagecolorallocate($image, 0, 0, 0);
    imagesetpixel($image, rand(0, 120), rand(0, 40), $black);
}
// 生成随机数字
$code = '';
for ($i = 0; $i < 4; $i++) {
    $code .= rand(0, 9);
}
// 将验证码写入画布中
$font = 'arial.ttf';
$white = imagecolorallocate($image, 255, 255, 255);
imagettftext($image, 20, 0, 15, 30, $white, $font, $code);
// 将验证码输出到浏览器
header('Content-Type: image/png');
imagepng($image);
imagedestroy($image);
// 存储验证码到Session中
$_SESSION['code'] = $code;
?>
Salin selepas log masuk

3 Gunakan pustaka pihak ketiga untuk menjana kod pengesahan

Walaupun pustaka PHP GD. baru disebut berkuasa, terdapat beberapa Kelemahan, seperti imej kod pengesahan yang dijana terlalu ringkas dan mudah dipecahkan oleh robot. Oleh itu, kami boleh menggunakan beberapa perpustakaan pihak ketiga untuk menjana kod pengesahan yang lebih kompleks.

Sebagai contoh, Gregwar/Captcha ialah perpustakaan kod pengesahan pihak ketiga yang popular yang boleh menjana pelbagai gaya imej kod pengesahan. Kaedah penggunaan juga sangat mudah Anda hanya perlu memuat turun perpustakaan dan mengimport fail captcha.php, dan memanggil fungsi create() untuk menjana kod pengesahan.

Berikut ialah contoh kod menggunakan perpustakaan Gregwar/Captcha untuk menjana kod pengesahan:

<?php
session_start();
require_once 'Captcha/autoload.php';
$captcha = new GregwarCaptchaCaptchaBuilder;
//配置验证码参数
$captcha->build(
    120,
    40,
    null, //font color
    true //background image
);

header('Content-Type: image/jpeg');
$captcha->output();
$code = $captcha->getPhrase();

$_SESSION['code'] = $code;
?>
Salin selepas log masuk

2. Penyelesaian kepada masalah biasa

  1. Corak kod pengesahan tidak cukup kompleks

Seperti yang dinyatakan di atas, jika corak kod pengesahan yang dijana terlalu mudah, ia boleh dipecahkan dengan mudah oleh robot. Untuk menyelesaikan masalah ini, kita boleh menambah pelbagai titik hingar, seperti garis gangguan, lengkok, corak latar belakang, dll. Kod pengesahan yang dijana dengan cara ini adalah lebih kompleks dan meningkatkan keselamatan.

  1. Jana berbilang kod pengesahan pada masa yang sama

Sesetengah robot akan cuba menjana berbilang kod pengesahan dalam satu saat untuk memecahkan kod pengesahan. Untuk mengelakkan serangan ini, kami boleh menambah beberapa TimeDelay, iaitu, apabila robot kerap menyerahkan kod pengesahan, kami boleh membiarkannya menunggu untuk tempoh masa sebelum menyerahkan semula. Ini berkesan menghalang serangan bot.

  1. Masa tamat tempoh kod pengesahan tidak jelas

Dalam projek sebenar, kod pengesahan tidak seharusnya wujud terlalu lama, kerana dari semasa ke semasa, keselamatan kod pengesahan Sex akan dikurangkan. Kami perlu menetapkan masa tamat tempoh kod pengesahan (contohnya, 30 saat) selepas menjana kod pengesahan dan mengesahkannya apabila menyerahkan kod pengesahan Jika masa tamat tempoh melebihi, kod pengesahan mesti dijana semula.

Akhir sekali, kita perlu ambil perhatian bahawa dalam aplikasi sebenar, selain menyediakan perlindungan kod pengesahan, bentuk langkah perlindungan keselamatan lain juga diperlukan, seperti suntikan SQL, serangan XSS dan penyelesaian lain, untuk lebih baik melindungi keselamatan Laman web.

Atas ialah kandungan terperinci Kaedah penjanaan kod pengesahan PHP dan penyelesaian kepada masalah biasa. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Panduan Pemasangan dan Naik Taraf PHP 8.4 untuk Ubuntu dan Debian Panduan Pemasangan dan Naik Taraf PHP 8.4 untuk Ubuntu dan Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 membawa beberapa ciri baharu, peningkatan keselamatan dan peningkatan prestasi dengan jumlah penamatan dan penyingkiran ciri yang sihat. Panduan ini menerangkan cara memasang PHP 8.4 atau naik taraf kepada PHP 8.4 pada Ubuntu, Debian, atau terbitan mereka

Tarikh dan Masa CakePHP Tarikh dan Masa CakePHP Sep 10, 2024 pm 05:27 PM

Untuk bekerja dengan tarikh dan masa dalam cakephp4, kami akan menggunakan kelas FrozenTime yang tersedia.

Bincangkan CakePHP Bincangkan CakePHP Sep 10, 2024 pm 05:28 PM

CakePHP ialah rangka kerja sumber terbuka untuk PHP. Ia bertujuan untuk menjadikan pembangunan, penggunaan dan penyelenggaraan aplikasi lebih mudah. CakePHP adalah berdasarkan seni bina seperti MVC yang berkuasa dan mudah difahami. Model, Pandangan dan Pengawal gu

Muat naik Fail CakePHP Muat naik Fail CakePHP Sep 10, 2024 pm 05:27 PM

Untuk mengusahakan muat naik fail, kami akan menggunakan pembantu borang. Di sini, adalah contoh untuk muat naik fail.

Pengesah Mencipta CakePHP Pengesah Mencipta CakePHP Sep 10, 2024 pm 05:26 PM

Pengesah boleh dibuat dengan menambah dua baris berikut dalam pengawal.

Cara Menyediakan Kod Visual Studio (Kod VS) untuk Pembangunan PHP Cara Menyediakan Kod Visual Studio (Kod VS) untuk Pembangunan PHP Dec 20, 2024 am 11:31 AM

Kod Visual Studio, juga dikenali sebagai Kod VS, ialah editor kod sumber percuma — atau persekitaran pembangunan bersepadu (IDE) — tersedia untuk semua sistem pengendalian utama. Dengan koleksi sambungan yang besar untuk banyak bahasa pengaturcaraan, Kod VS boleh menjadi c

Panduan Ringkas CakePHP Panduan Ringkas CakePHP Sep 10, 2024 pm 05:27 PM

CakePHP ialah rangka kerja MVC sumber terbuka. Ia menjadikan pembangunan, penggunaan dan penyelenggaraan aplikasi lebih mudah. CakePHP mempunyai beberapa perpustakaan untuk mengurangkan beban tugas yang paling biasa.

Bagaimana anda menghuraikan dan memproses HTML/XML dalam PHP? Bagaimana anda menghuraikan dan memproses HTML/XML dalam PHP? Feb 07, 2025 am 11:57 AM

Tutorial ini menunjukkan cara memproses dokumen XML dengan cekap menggunakan PHP. XML (bahasa markup extensible) adalah bahasa markup berasaskan teks yang serba boleh yang direka untuk pembacaan manusia dan parsing mesin. Ia biasanya digunakan untuk penyimpanan data

See all articles