Maison  >  Article  >  développement back-end  >  Comment implémenter le code de vérification et empêcher les attaques de robots dans un projet PHP ?

Comment implémenter le code de vérification et empêcher les attaques de robots dans un projet PHP ?

WBOY
WBOYoriginal
2023-11-03 17:40:561031parcourir

Comment implémenter le code de vérification et empêcher les attaques de robots dans un projet PHP ?

Comment implémenter le code de vérification et prévenir les attaques de robots dans un projet PHP ?

Avec le développement et la popularité d'Internet, de plus en plus de sites Web et d'applications commencent à être menacés par des attaques de robots. Afin de protéger la sécurité des informations des utilisateurs et d'offrir une bonne expérience utilisateur, les développeurs doivent mettre en œuvre des codes de vérification et des mesures pour empêcher les attaques de robots dans leurs projets. Cet article expliquera comment implémenter des codes de vérification et empêcher les attaques de robots dans les projets PHP.

1. Mise en œuvre du code de vérification
Le code de vérification est une méthode courante pour prévenir les attaques de robots. Les utilisateurs doivent saisir un code de vérification lors de leur connexion ou de leur inscription pour confirmer leur identité.

  1. Générer des images de code de vérification
    PHP fournit une multitude de fonctions de traitement graphique qui peuvent être utilisées pour générer des images de code de vérification. Voici un exemple de code :
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);
  1. Valider la saisie de l'utilisateur
    Lorsque l'utilisateur soumet le formulaire, comparez le code de vérification saisi par l'utilisateur avec le code de vérification généré pour déterminer si la saisie de l'utilisateur est correcte. Voici un exemple de code :
session_start();
$code = $_SESSION['code'];

$userInput = $_POST['code'];

if ($userInput == $code) {
    // 验证码输入正确,继续处理用户提交的数据
} else {
    // 验证码输入错误,给用户一个提示
    echo "验证码输入错误";
}

2. Mise en œuvre de la prévention des attaques de robots
Le code de vérification ne peut empêcher que de simples attaques de robots. Afin de mieux prévenir les attaques de robots, nous pouvons également prendre les mesures suivantes :

  1. Ajouter des champs cachés.
    Ajoutez un champ masqué au formulaire et vérifiez côté serveur si la valeur du champ est vide. Étant donné que les robots remplissent souvent automatiquement les champs du formulaire, ils remplissent également ce champ, révélant ainsi leur identité de robot.
<input type="hidden" name="isHuman" value="">
if (!empty($_POST['isHuman'])) {
    // 非机器人提交,继续处理用户提交的数据
} else {
    // 机器人提交,停止处理并给用户一个提示
    echo "请不要使用机器人进行提交";
}
  1. Vérifier la fréquence des demandes
    Déterminez si l'utilisateur est un robot en fonction de la fréquence des demandes de l'utilisateur. Par exemple, si une adresse IP envoie continuellement un grand nombre de requêtes sur une courte période de temps, elle peut être déterminée comme étant un robot. Vous pouvez enregistrer l'horodatage et l'adresse IP des demandes des utilisateurs, puis formuler des politiques correspondantes en fonction des besoins réels.
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 {
    // 用户请求正常,继续处理用户提交的数据
}

Grâce à l'application combinée des mesures ci-dessus, l'effet de vérification du code et la prévention des attaques de robots peuvent être mieux obtenus dans les projets PHP. Les développeurs peuvent ajuster de manière flexible la forme et les règles de vérification du code de vérification, ainsi que les conditions de détermination des attaques de robots, en fonction de besoins spécifiques, pour améliorer la sécurité du système et l'expérience utilisateur.

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