


Kaedah penjanaan kod pengesahan PHP dan penyelesaian kepada masalah biasa
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
- 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; ?>
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; ?>
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; ?>
2. Penyelesaian kepada masalah biasa
- 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.
- 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.
- 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!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



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

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

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

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

Pengesah boleh dibuat dengan menambah dua baris berikut dalam pengawal.

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

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.

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
