Avec le développement continu de la technologie réseau, PHP, en tant que langage de programmation Web répandu, est utilisé par de plus en plus de personnes. Cependant, le problème des vulnérabilités d’injection de code dans le développement PHP a toujours troublé les programmeurs. Les vulnérabilités d'injection de code se produisent lorsqu'un attaquant soumet du code et des données malveillants à une application, ce qui amène l'application à effectuer des actions involontaires ou à exposer des données sensibles. Dans cet article, nous aborderons la protection de sécurité PHP pour éviter ce problème.
1. Vérification des paramètres
La vérification des paramètres est la base pour prévenir les vulnérabilités d'injection de code. Pendant le processus de développement PHP, les données d'entrée doivent être vérifiées. Vous pouvez utiliser le filtrage de fonctions pour vérifier les paramètres d'entrée ou utiliser des expressions régulières pour vérifier les paramètres d'entrée. En filtrant et en vérifiant les paramètres, il est possible d'empêcher les attaquants d'attaquer le système en entrant du code malveillant.
Par exemple :
$username = $_POST['username']; $password = $_POST['password']; if (!preg_match("/^[a-zA-Z0-9]{4,16}$/",$username)) { echo "用户名格式不正确"; } else if (!preg_match("/^[a-zA-Z0-9]{6,18}$/",$password)) { echo "密码格式不正确"; } else { //执行登录操作 }
2. Injection SQL
L'injection SQL est l'une des méthodes d'attaque par injection les plus courantes, c'est-à-dire que l'attaquant injecte des instructions SQL dans les paramètres d'entrée pour obtenir des données sensibles dans la base de données. Par conséquent, pendant le processus de développement, l'instruction SQL doit être paramétrée ou utiliser des instructions préparées au lieu d'intégrer les paramètres directement dans l'instruction SQL.
Par exemple :
$username = $_POST['username']; $password = $_POST['password']; $stmt = $mysqli->prepare("SELECT * FROM users WHERE username = ? and password = ?"); $stmt->bind_param("ss", $username, $password); $stmt->execute();
3. Attaque XSS
L'attaque XSS, également connue sous le nom d'attaque par script intersite, est une méthode d'attaque réseau courante. L'attaquant injectera du code de script malveillant dans la page Web lorsque d'autres utilisateurs visiteront la page Web, ces codes seront exécutés, entraînant une fuite d'informations sur l'utilisateur ou une falsification de la page Web. Par conséquent, pendant le processus de développement, il est nécessaire de filtrer le contenu d'entrée et d'utiliser la fonction htmlspecialchars pour échapper aux caractères spéciaux.
Par exemple :
$name = $_POST['name']; $message = $_POST['message']; echo htmlspecialchars($name) . " said: " . htmlspecialchars($message);
4. Vulnérabilité de téléchargement de fichiers
La vulnérabilité de téléchargement de fichiers signifie que l'attaquant télécharge des fichiers malveillants sur le serveur dans la fonction de téléchargement de fichiers et exécute du code malveillant. Par conséquent, pendant le processus de téléchargement de fichier, vous devez vérifier le fichier, tel que son type, sa taille, etc., et définir le répertoire du fichier téléchargé en lecture seule pour éviter de télécharger des fichiers malveillants.
Par exemple :
$allowed_extensions = array("jpg", "jpeg", "png", "gif"); $upload_max_size = 1024 * 1024; $file = $_FILES['file']; //检查文件大小 if ($file['size'] > $upload_max_size) { echo "文件过大"; } //检查文件类型 $extension = pathinfo($file['name'], PATHINFO_EXTENSION); if (!in_array($extension, $allowed_extensions)) { echo "文件类型不支持"; } //上传文件 move_uploaded_file($file['tmp_name'], "/var/www/uploads" . uniqid() . "." . $extension);
5. Gestion de session
La gestion de session consiste à assurer la sécurité de la session utilisateur après la connexion de l'utilisateur. Les attaquants peuvent obtenir des informations utilisateur sensibles en falsifiant des informations de session ou en devinant les identifiants de session. Par conséquent, un contrôle de sécurité est requis dans la gestion des sessions, comme limiter le temps de connexion, limiter le nombre de connexions, utiliser le protocole SSL, définir Session Cookie HttpOnly, etc.
Par exemple :
session_start(); //设置Session Cookie HttpOnly ini_set("session.cookie_httponly", 1); //设置Session ID长度 ini_set("session.hash_bits_per_character", 6); //限制登录时间 if ($_SESSION['last_active_time'] + 3600 < time()) { //退出登录 } //限制登录次数 if ($_SESSION['login_failed_times'] > 3) { //退出登录 }
Pendant le processus de développement PHP, les mesures ci-dessus peuvent efficacement éviter les vulnérabilités d'injection de code. Les développeurs doivent combiner les mesures de sécurité ci-dessus en fonction de besoins spécifiques pour améliorer la sécurité des applications PHP.
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!