Guide de programmation sécurisée PHP et de défense des vulnérabilités de codage
Avec le développement rapide d'Internet, PHP, en tant que langage de programmation côté serveur couramment utilisé, est largement utilisé dans le développement Web. Cependant, dans le même temps, les questions de sécurité Web sont également devenues un sujet important dans le monde Internet. Cet article vous présentera les principes de programmation sécurisée PHP et fournira des exemples de code pour vous défendre contre les vulnérabilités de codage courantes.
filter_var()
et preg_match()
pour la vérification. Par exemple, si vous souhaitez vérifier une adresse e-mail, vous pouvez utiliser le code suivant : filter_var()
和preg_match()
来进行验证。例如,若想验证一个电子邮件地址,您可以使用以下代码:$email = $_POST['email']; if (filter_var($email, FILTER_VALIDATE_EMAIL)) { // 验证通过 // 继续处理 } else { // 验证失败 // 给出错误提示 }
htmlspecialchars()
函数可以将特殊字符转换为HTML实体,防止被浏览器解释为HTML标签:$username = $_GET['username']; echo '欢迎,' . htmlspecialchars($username);
$stmt = $pdo->prepare('SELECT * FROM users WHERE username = :username'); $stmt->execute([':username' => $username]); $result = $stmt->fetch(PDO::FETCH_ASSOC);
$allowedTypes = ['image/jpeg', 'image/png']; $maxSize = 1024 * 1024; // 1 MB $uploadDir = 'uploads/'; $file = $_FILES['file']; if (in_array($file['type'], $allowedTypes) && $file['size'] <= $maxSize) { $filename = uniqid() . '_' . $file['name']; move_uploaded_file($file['tmp_name'], $uploadDir . $filename); // 文件上传成功 } else { // 文件上传失败 }
HttpOnly
和Secure
session_set_cookie_params([ 'lifetime' => 86400, // 一天 'path' => '/', 'domain' => $_SERVER['HTTP_HOST'], 'secure' => true, // 仅通过HTTPS传输 'httponly' => true // 仅限HTTP访问,无法被JavaScript访问 ]); session_start();
htmlspecialchars()
pour convertir les caractères spéciaux en entités HTML afin d'éviter qu'ils ne soient interprétés comme des balises HTML par le navigateur : function log_error($message) { error_log($message, 3, 'error.log'); } try { // 代码块 } catch (Exception $e) { log_error($e->getMessage()); // 错误处理逻辑 }
Téléchargement et traitement de fichiers
Lors de la réception de fichiers téléchargés par les utilisateurs, assurez-vous d'effectuer les contrôles de sécurité nécessaires. Tout d’abord, vérifiez le type et la taille du fichier et assurez-vous que seuls les types de fichiers approuvés sont acceptés. Ensuite, définissez un chemin de stockage sécurisé pour le fichier téléchargé et renommez-le pour empêcher les attaques par traversée de répertoire. Voici un exemple de code pour le téléchargement de fichiers : 🎜🎜rrreeeHttpOnly
et Secure
. Voici un exemple de définition d'un cookie de session : 🎜🎜rrreee🎜🎜Journalisation et gestion des erreurs🎜La journalisation d'une application est un moyen utile de surveiller les problèmes et anomalies de sécurité potentiels. Utilisez la fonction de journalisation intégrée de PHP pour enregistrer les informations sur les erreurs et les exceptions dans un fichier journal au lieu de les transmettre directement à l'utilisateur. Ce qui suit est un exemple de code de journalisation de base : 🎜🎜rrreee🎜Pour résumer, la programmation sécurisée PHP et la défense contre les vulnérabilités de codage nécessitent une validation et un filtrage des entrées, un codage de sortie, la prévention de l'injection SQL, le téléchargement et le traitement de fichiers, la gestion et la sécurité des sessions, la journalisation. Commencez par la gestion des erreurs et d’autres aspects. En apprenant et en mettant en pratique ces principes de programmation sécurisée, vous pouvez améliorer la sécurité de vos applications Web et réduire les risques et vulnérabilités potentiels. 🎜🎜Ce qui précède est une brève introduction et un exemple de code des vulnérabilités de programmation de sécurité PHP et de codage de défense dans cet article. J'espère que cela sera utile pour votre travail de développement PHP. Pendant le processus de programmation, gardez toujours à l'esprit que la sécurité est une responsabilité importante, minimisez tous les risques de sécurité et assurez la sécurité des données et des systèmes 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!