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 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.
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);
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:
<input type="hidden" name="isHuman" value="">
if (!empty($_POST['isHuman'])) { // 非机器人提交,继续处理用户提交的数据 } else { // 机器人提交,停止处理并给用户一个提示 echo "请不要使用机器人进行提交"; }
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!