Maison  >  Article  >  développement back-end  >  Comment utiliser PHP pour implémenter l'authentification homme-machine et prévenir les comportements malveillants

Comment utiliser PHP pour implémenter l'authentification homme-machine et prévenir les comportements malveillants

WBOY
WBOYoriginal
2023-09-05 16:04:451429parcourir

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

Comment utiliser PHP pour réaliser une vérification homme-machine et prévenir les comportements malveillants

Avec le développement rapide d'Internet, les problèmes de sécurité des réseaux sont devenus de plus en plus importants. L'augmentation des comportements malveillants a conduit à la nécessité de prendre des mesures pour protéger la sécurité de notre site Web et de nos utilisateurs. Une pratique courante consiste à utiliser des techniques de vérification homme-bot pour différencier les utilisateurs réels des robots. Cet article décrit comment utiliser PHP pour implémenter l'authentification homme-machine et prévenir les comportements malveillants, et fournit des exemples de code correspondants.

  1. Utiliser le code de vérification

Le code de vérification est une technologie de vérification homme-machine de base qui oblige les utilisateurs à saisir un code de vérification lorsqu'ils soumettent un formulaire ou effectuent certaines opérations pour prouver qu'ils sont un utilisateur réel et non un robot. Voici un exemple de code qui utilise PHP pour implémenter un code de vérification simple :

<?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);
?>

Le code ci-dessus génère une chaîne de code de vérification d'une longueur de 6 et l'enregistre dans la session. Lors de la génération du code de vérification, une image de code de vérification est également dessinée pour afficher le code de vérification à l'utilisateur.

  1. Vérifier la saisie de l'utilisateur

Lorsque l'utilisateur soumet le formulaire, il est nécessaire de vérifier si le code de vérification saisi par l'utilisateur est correct. Voici un exemple de code qui utilise PHP pour vérifier le code de vérification saisi par l'utilisateur :

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

Le code ci-dessus obtient le code de vérification soumis par l'utilisateur et obtient le code de vérification correct de la session. Comparez ensuite les deux. S'ils sont égaux, cela signifie que le code de vérification a été saisi correctement et que des opérations ultérieures peuvent être effectuées. S'ils ne sont pas égaux, cela signifie que le code de vérification a été mal saisi et qu'une invite correspondante doit être effectuée. donné.

  1. Restriction de l'adresse IP

En plus d'utiliser des codes de vérification, vous pouvez également restreindre l'accès en fonction de l'adresse IP de l'utilisateur. En cas de comportement malveillant, les robots sont souvent utilisés pour attaquer et les requêtes des robots ont souvent des adresses IP similaires. Par conséquent, nous pouvons restreindre la navigation en fonction de l'adresse IP de l'utilisateur. Si la même adresse IP visite fréquemment le site Web sur une courte période, il peut s'agir d'un comportement malveillant.

Ce qui suit est un exemple de code qui utilise PHP pour restreindre l'accès en fonction de l'adresse 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 {
  // 不允许访问,给出相应提示
}
?>

Le code ci-dessus détermine s'il faut autoriser l'accès en comparant également l'adresse IP de l'accès actuel et l'adresse IP du dernier accès. comme intervalle de temps. Si la même adresse IP est consultée plusieurs fois sur une courte période, il peut s’agir d’un comportement malveillant.

Résumé

Cet article décrit comment utiliser PHP pour réaliser une vérification homme-machine et les méthodes de base pour empêcher les comportements malveillants, notamment l'utilisation de codes de vérification pour la vérification et les restrictions basées sur les adresses IP. Ces méthodes peuvent protéger efficacement la sécurité du site Web et des utilisateurs. Bien entendu, il existe d’autres techniques plus avancées et plus complexes qui peuvent être utilisées, mais les méthodes ci-dessus sont déjà relativement courantes et simples. J'espère que les lecteurs comprendront cela et pourront l'appliquer dans des projets réels. Apprendre et améliorer continuellement sa propre sensibilisation à la sécurité du réseau est un élément important de la protection de la sécurité du site Web et des utilisateurs.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn