Meilleures pratiques de sécurité pour le développement PHP et Vue.js : prévenir les injections de bases de données
La sécurité est un aspect qui doit être pris au sérieux lors de tout processus de développement d'applications. L'injection de base de données est l'une des vulnérabilités de sécurité courantes. En injectant de manière malveillante les entrées des utilisateurs, les pirates peuvent obtenir ou falsifier les données de la base de données. Dans le développement PHP et Vue.js, nous pouvons adopter certaines bonnes pratiques pour empêcher l’injection de base de données. Cet article présentera quelques techniques pour empêcher l’injection de base de données et donnera des exemples de code correspondants.
$username = $_POST['username']; $password = $_POST['password']; $sql = "SELECT * FROM users WHERE username = :username AND password = :password"; $stmt = $pdo->prepare($sql); $stmt->bindParam(':username', $username); $stmt->bindParam(':password', $password); $stmt->execute(); $user = $stmt->fetch(PDO::FETCH_ASSOC);
Dans le code ci-dessus, nous avons utilisé des espaces réservés nommés (:username et :password) à la place de la saisie réelle de l'utilisateur. La méthode bindParam de PDO lie les entrées de l'utilisateur à des espaces réservés, garantissant que l'entrée n'est pas interprétée comme faisant partie d'une instruction SQL.
<template> <div> <input v-model="username" type="text" placeholder="Username"> <input v-model="password" type="password" placeholder="Password"> <button @click="login">Login</button> </div> </template> <script> export default { data() { return { username: '', password: '' }; }, methods: { login() { // 进一步验证用户输入,防止注入攻击 if (/^[a-zA-Z0-9]+$/.test(this.username) && /^[a-zA-Z0-9]+$/.test(this.password)) { // 验证通过,发送登录请求 // ... } } } }; </script>
Dans le code ci-dessus, nous avons utilisé l'expression régulière ^[a-zA-Z0-9]+$ pour restreindre le nom d'utilisateur et le mot de passe à ne contenir que des lettres et Nombres. Cela empêche les entrées utilisateur de contenir des caractères spéciaux ou des instructions SQL.
$username = mysqli_real_escape_string($conn, $_POST['username']); $password = mysqli_real_escape_string($conn, $_POST['password']); $sql = "SELECT * FROM users WHERE username = '$username' AND password = '$password'"; $result = mysqli_query($conn, $sql); $user = mysqli_fetch_assoc($result);
Dans le code ci-dessus, nous utilisons mysqli_real_escape_string pour échapper le nom d'utilisateur et le mot de passe afin de garantir que l'entrée ne brise pas la structure de l'instruction SQL.
En résumé, en adoptant certaines pratiques de codage sécurisées, nous pouvons prévenir efficacement les attaques par injection de bases de données. Les requêtes paramétrées, la validation et le filtrage des entrées, ainsi que la désinfection et l'échappement des entrées utilisateur sont autant de mesures défensives très importantes. Dans le développement PHP et Vue.js, les développeurs doivent toujours donner la priorité à la sécurité et choisir des mesures de défense appropriées pour protéger la base de données de l'application en fonction de la situation spécifique.
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!