PHP를 사용하여 인간-기계 인증을 구현하고 악의적인 행동을 방지하는 방법

WBOY
풀어 주다: 2023-09-05 16:58:01
원래의
1427명이 탐색했습니다.

如何使用 PHP 实现人机验证和防止恶意行为

PHP를 사용하여 인간-컴퓨터 검증을 달성하고 악의적인 행위를 방지하는 방법

인터넷의 급속한 발전으로 인해 네트워크 보안 문제가 점점 더 중요해지고 있습니다. 악의적인 행동이 증가함에 따라 당사 웹사이트와 사용자의 보안을 보호하기 위한 조치를 취할 필요가 생겼습니다. 일반적인 관행은 인간-봇 검증 기술을 사용하여 실제 사용자와 봇을 구별하는 것입니다. 이 문서에서는 PHP를 사용하여 인간-기계 인증을 구현하고 악의적인 동작을 방지하는 방법을 설명하고 해당 코드 예제를 제공합니다.

  1. 인증 코드 사용

인증 코드는 사용자가 로봇이 아닌 실제 사용자임을 증명하기 위해 양식을 제출하거나 특정 작업을 수행할 때 인증 코드를 입력해야 하는 기본적인 인간-기계 인증 기술입니다. 다음은 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의 인증코드 문자열을 생성하여 세션에 저장합니다. 인증코드를 생성하는 동안 인증코드 그림도 그려져 사용자에게 인증코드가 표시됩니다.

  1. 사용자 입력 확인

사용자가 양식을 제출할 때 사용자가 입력한 인증 코드가 올바른지 확인해야 합니다. 다음은 사용자가 입력한 인증 코드를 확인하기 위해 PHP를 사용하는 샘플 코드입니다.

<?php
session_start();
 
// 获取用户提交的验证码
$captcha = $_POST['captcha'];
 
// 获取保存在 session 中的验证码
$correctCaptcha = $_SESSION['captcha'];
 
// 验证用户输入的验证码是否正确
if($captcha === $correctCaptcha) {
  // 验证码正确,执行后续操作
} else {
  // 验证码错误,给出相应提示
}
?>
로그인 후 복사

위 코드는 사용자가 제출한 인증 코드를 가져오고 세션에서 올바른 인증 코드를 가져옵니다. 그런 다음 둘을 비교하십시오. 동일하면 인증 코드가 올바르게 입력되었으며 후속 작업을 수행할 수 있음을 의미하며, 동일하지 않으면 인증 코드가 잘못 입력되었으며 해당 프롬프트가 제공되어야 함을 의미합니다.

  1. IP 주소 제한

인증 코드 사용 외에도 사용자의 IP 주소를 기준으로 액세스를 제한할 수도 있습니다. 악의적인 행위의 경우 로봇을 이용해 공격하는 경우가 많으며, 로봇의 요청에는 유사한 IP 주소가 있는 경우가 많습니다. 따라서, 사용자의 IP 주소를 기준으로 제한할 수 있으며, 동일한 IP 주소가 짧은 시간 내에 해당 웹사이트를 자주 방문하는 경우 이는 악의적인 행위일 수 있습니다.

다음은 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 주소 기반 제한을 포함하여 악의적인 행동을 방지하는 기본 방법에 대해 설명합니다. 이러한 방법을 사용하면 웹사이트와 사용자의 보안을 효과적으로 보호할 수 있습니다. 물론, 더 발전되고 복잡한 다른 기술도 사용할 수 있지만 위의 방법은 이미 비교적 일반적이고 간단합니다. 독자들이 이를 이해하고 실제 프로젝트에 적용할 수 있기를 바란다. 자신의 네트워크 보안 인식을 지속적으로 학습하고 개선하는 것은 웹사이트와 사용자의 보안을 보호하는 데 중요한 부분입니다.

위 내용은 PHP를 사용하여 인간-기계 인증을 구현하고 악의적인 행동을 방지하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!