PHP を使用して人間とコンピュータの検証を実現し、悪意のある動作を防止する方法
インターネットの急速な発展に伴い、ネットワーク セキュリティの問題がますます顕著になってきています。悪意のある行為が増加しているため、当社の Web サイトとユーザーのセキュリティを保護するための措置を講じる必要があります。一般的な方法は、人間とボットの検証技術を使用して、実際のユーザーとボットを区別することです。この記事では、PHP を使用してヒューマン マシン認証を実装し、悪意のある動作を防止する方法について説明し、対応するコード例を示します。
検証コードは、フォームを送信するとき、または特定の操作を実行するときにユーザーが検証コードを入力することを証明するための基本的なヒューマンマシン検証テクノロジです。ボットではなく実際のユーザーです。以下は、PHP を使用して単純な検証コードを実装するサンプル コードです。
<?php session_start(); // 生成随机验证码字符串 $length = 6; // 验证码长度 $chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; $randStr = ''; for($i = 0; $i < $length; $i++) { $randStr .= $chars[rand(0, strlen($chars) - 1)]; } // 将验证码字符串保存到 session 中 $_SESSION['captcha'] = $randStr; // 绘制验证码图片 $image = imagecreatetruecolor(100, 30); $bgColor = imagecolorallocate($image, 255, 255, 255); // 背景颜色 $fontColor = imagecolorallocate($image, 0, 0, 0); // 文字颜色 imagefill($image, 0, 0, $bgColor); imagestring($image, 5, 25, 5, $randStr, $fontColor); // 输出验证码图片 header('Content-Type: image/png'); imagepng($image); imagedestroy($image); ?>
上記のコードは、長さ 6 の検証コード文字列を生成し、セッションに保存します。検証コードの生成中に、検証コードをユーザーに表示するための検証コード画像も描画されます。
ユーザーがフォームを送信するとき、ユーザーが入力した確認コードが正しいかどうかを確認する必要があります。以下は、PHP を使用してユーザーが入力した検証コードを検証するサンプル コードです。
<?php session_start(); // 获取用户提交的验证码 $captcha = $_POST['captcha']; // 获取保存在 session 中的验证码 $correctCaptcha = $_SESSION['captcha']; // 验证用户输入的验证码是否正确 if($captcha === $correctCaptcha) { // 验证码正确,执行后续操作 } else { // 验证码错误,给出相应提示 } ?>
上記のコードは、ユーザーが送信した検証コードを取得し、セッションから正しい検証コードを取得します。次に、2 つを比較します。値が等しい場合は、検証コードが正しく入力され、その後の操作を実行できることを意味します。値が等しくない場合は、検証コードが間違って入力されたことを意味し、対応するプロンプトを表示する必要があります。
確認コードの使用に加えて、ユーザーの IP アドレスに基づいてアクセスを制限することもできます。悪意のある動作の場合、ボットが攻撃に使用されることが多く、ボットのリクエストには同様の IP アドレスが含まれることがよくあります。そのため、ユーザーのIPアドレスに基づいて制限を行うことができますが、同じIPアドレスが短期間に頻繁にWebサイトにアクセスする場合は、悪意のある行為である可能性があります。
以下は、PHP を使用して IP アドレスに基づいてアクセスを制限するサンプル コードです。
<?php $allow = true; // 是否允许访问 // 获取用户的 IP 地址 $clientIP = $_SERVER['REMOTE_ADDR']; // 获取用户访问的时间戳 $accessTime = time(); // 获取保存在 session 中的 IP 地址和访问时间 $sessionIP = $_SESSION['ip']; $sessionTime = $_SESSION['time']; // 判断用户与上一次访问的时间差 $timeDiff = $accessTime - $sessionTime; if($timeDiff < 10 && $clientIP === $sessionIP) { $allow = false; // 访问间隔过短,可能是恶意行为 } // 更新 session 中的 IP 地址和访问时间 $_SESSION['ip'] = $clientIP; $_SESSION['time'] = $accessTime; // 输出结果 if($allow) { // 允许访问,继续执行后续操作 } else { // 不允许访问,给出相应提示 } ?>
上記のコードは、現在アクセスされている IP アドレスと最後にアクセスされた IP アドレスを比較することによって判断されます。時間間隔、アクセスが許可されるかどうか。短期間に同じIPアドレスに複数回アクセスがあった場合は、悪意のある動作である可能性があります。
概要
この記事では、PHP を使用して人間とコンピューターの検証を実現する方法と、IP アドレスに基づく検証と制限に検証コードを使用するなど、悪意のある動作を防ぐための基本的な方法を紹介します。これらの方法は、Web サイトとユーザーのセキュリティを効果的に保護できます。もちろん、他にも高度で複雑な手法を使用できますが、上記の方法はすでに比較的一般的で簡単です。読者の皆様にはこの点をご理解いただき、実際のプロジェクトに応用していただければ幸いです。自身のネットワーク セキュリティ意識を継続的に学習し、向上させることは、Web サイトとユーザーのセキュリティを保護するために重要です。
以上がPHP を使用してヒューマンマシン認証を実装し、悪意のある動作を防ぐ方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。