Comment protéger la base de données d'un site PHP des attaques par injection SQL ?
Présentation :
Lors du développement et de la maintenance d'un site Web PHP, il est crucial de protéger votre base de données contre les attaques par injection SQL. Les attaques par injection SQL constituent une menace courante en matière de cybersécurité. Elles permettent aux attaquants d'usurper les bases de données avec des entrées malveillantes, entraînant ainsi une fuite, une corruption ou une perte de données. Cet article couvrira quelques précautions courantes et meilleures pratiques pour protéger la base de données de votre site Web PHP contre les attaques par injection SQL.
$pdo = new PDO("mysql:host=localhost;dbname=mydb", "username", "password"); $username = $_POST['username']; $password = $_POST['password']; $stmt = $pdo->prepare('SELECT * FROM users WHERE username = :username AND password = :password'); $stmt->bindParam(':username', $username); $stmt->bindParam(':password', $password); $stmt->execute(); $result = $stmt->fetch();
filter_var()
、filter_input()
etc. Voici un exemple d'utilisation d'une fonction de filtre pour filtrer les entrées de l'utilisateur : $username = $_POST['username']; $password = $_POST['password']; $filteredUsername = filter_var($username, FILTER_SANITIZE_STRING); $filteredPassword = filter_var($password, FILTER_SANITIZE_STRING); // 继续处理过滤后的输入,如参数化查询、密码哈希等
$userInput = $_POST['input']; // 不推荐的做法 $query = "SELECT * FROM users WHERE username = '" . $userInput . "'"; $result = $pdo->query($query); // 推荐的做法 $stmt = $pdo->prepare('SELECT * FROM users WHERE username = :username'); $stmt->bindParam(':username', $userInput); $stmt->execute(); $result = $stmt->fetch();
Résumé :
Protéger la base de données d'un site Web PHP contre les attaques par injection SQL est une tâche cruciale. Cet article propose plusieurs précautions courantes et bonnes pratiques, notamment l'utilisation de requêtes paramétrées et d'instructions préparées, la validation et le filtrage des entrées, la limitation stricte des autorisations des comptes de base de données, l'évitement du couplage direct des requêtes SQL, la mise à jour et la maintenance régulières du logiciel de base de données et l'utilisation de plug-ins de pare-feu et de sécurité. , etc. En prenant ces mesures, vous pouvez protéger efficacement la base de données de votre site Web PHP contre la menace d'attaques par injection SQL.
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!