Heim  >  Artikel  >  Backend-Entwicklung  >  So implementieren Sie PHP zur Implementierung der Mensch-Maschine-Authentifizierung und verhindern böswilliges Verhalten

So implementieren Sie PHP zur Implementierung der Mensch-Maschine-Authentifizierung und verhindern böswilliges Verhalten

WBOY
WBOYOriginal
2023-09-05 16:04:451432Durchsuche

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

So verwenden Sie PHP, um eine Mensch-Computer-Verifizierung zu erreichen und böswilliges Verhalten zu verhindern.

Mit der rasanten Entwicklung des Internets sind Netzwerksicherheitsprobleme immer wichtiger geworden. Die Zunahme böswilligen Verhaltens hat dazu geführt, dass wir Maßnahmen ergreifen müssen, um die Sicherheit unserer Website und unserer Benutzer zu schützen. Eine gängige Praxis ist die Verwendung von Mensch-zu-Bot-Verifizierungstechniken, um zwischen echten Benutzern und Bots zu unterscheiden. Dieser Artikel beschreibt, wie PHP zur Implementierung der Mensch-Maschine-Authentifizierung und zur Verhinderung böswilligen Verhaltens verwendet wird, und stellt entsprechende Codebeispiele bereit.

  1. Bestätigungscode verwenden

Bestätigungscode ist eine grundlegende Mensch-Computer-Verifizierungstechnologie, bei der Benutzer beim Absenden eines Formulars oder beim Durchführen bestimmter Vorgänge einen Bestätigungscode eingeben müssen, um zu beweisen, dass sie ein echter Benutzer und kein Roboter sind. Hier ist ein Beispielcode, der PHP verwendet, um einen einfachen Bestätigungscode zu implementieren:

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

Der obige Code generiert eine Bestätigungscodezeichenfolge mit einer Länge von 6 und speichert sie in der Sitzung. Beim Generieren des Bestätigungscodes wird auch ein Bild des Bestätigungscodes gezeichnet, um dem Benutzer den Bestätigungscode anzuzeigen.

  1. Benutzereingabe überprüfen

Wenn der Benutzer das Formular absendet, muss überprüft werden, ob der vom Benutzer eingegebene Bestätigungscode korrekt ist. Hier ist ein Beispielcode, der PHP verwendet, um den vom Benutzer eingegebenen Bestätigungscode zu überprüfen:

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

Der obige Code ruft den vom Benutzer übermittelten Bestätigungscode ab und erhält den korrekten Bestätigungscode aus der Sitzung. Wenn sie dann gleich sind, bedeutet dies, dass der Bestätigungscode korrekt eingegeben wurde und nachfolgende Vorgänge durchgeführt werden können. Wenn sie nicht gleich sind, bedeutet dies, dass der Bestätigungscode falsch eingegeben wurde und eine entsprechende Eingabeaufforderung erforderlich ist.

  1. Einschränkung der IP-Adresse

Zusätzlich zur Verwendung von Bestätigungscodes können Sie den Zugriff auch basierend auf der IP-Adresse des Benutzers einschränken. Für bösartiges Verhalten werden häufig Roboter zum Angriff eingesetzt, und die Anfragen von Robotern haben oft ähnliche IP-Adressen. Daher können wir eine Einschränkung anhand der IP-Adresse des Benutzers vornehmen. Wenn dieselbe IP-Adresse die Website in kurzer Zeit häufig besucht, handelt es sich möglicherweise um ein böswilliges Verhalten.

Das Folgende ist ein Beispielcode, der PHP verwendet, um den Zugriff basierend auf der IP-Adresse einzuschränken:

<?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 {
  // 不允许访问,给出相应提示
}
?>

Der obige Code bestimmt, ob der Zugriff zugelassen werden soll, indem er auch die IP-Adresse des aktuellen Zugriffs und die IP-Adresse des letzten Zugriffs vergleicht als Zeitintervall. Wenn innerhalb kurzer Zeit mehrmals auf dieselbe IP-Adresse zugegriffen wird, kann es sich um böswilliges Verhalten handeln.

Zusammenfassung

In diesem Artikel wird beschrieben, wie Sie mit PHP eine Mensch-Maschine-Verifizierung durchführen und grundlegende Methoden zur Verhinderung böswilligen Verhaltens anwenden, einschließlich der Verwendung von Verifizierungscodes zur Verifizierung und Einschränkungen basierend auf IP-Adressen. Diese Methoden können die Sicherheit der Website und der Benutzer wirksam schützen. Natürlich gibt es auch andere fortgeschrittenere und komplexere Techniken, die verwendet werden können, aber die oben genannten Methoden sind bereits relativ verbreitet und einfach. Ich hoffe, dass die Leser dies verstehen und es in tatsächlichen Projekten anwenden können. Das kontinuierliche Erlernen und Verbessern des eigenen Netzwerksicherheitsbewusstseins ist ein wichtiger Bestandteil zum Schutz der Sicherheit der Website und der Benutzer.

Das obige ist der detaillierte Inhalt vonSo implementieren Sie PHP zur Implementierung der Mensch-Maschine-Authentifizierung und verhindern böswilliges Verhalten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn