Maison  >  Article  >  développement back-end  >  Meilleures pratiques de sécurité pour le développement PHP et Vue.js : prévenir les injections de bases de données

Meilleures pratiques de sécurité pour le développement PHP et Vue.js : prévenir les injections de bases de données

WBOY
WBOYoriginal
2023-07-06 11:15:061561parcourir

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.

  1. Utiliser des requêtes paramétrées
    Les requêtes paramétrées sont un moyen courant d'éviter l'injection de base de données. Cela empêche efficacement l’utilisation des entrées utilisateur dans le cadre d’une instruction SQL. En PHP, vous pouvez utiliser PDO (PHP Data Objects) ou l'extension MySQLi pour effectuer des requêtes paramétrées. Voici un exemple utilisant PDO :
$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.

  1. Validation et filtrage des entrées
    En plus d'utiliser des requêtes paramétrées, la validation et le filtrage des entrées utilisateur sont également une étape importante pour empêcher l'injection de base de données. Dans Vue.js, les entrées utilisateur peuvent être validées à l'aide d'expressions régulières ou de règles de validation intégrées. Voici un exemple de validation d'entrée à l'aide de Vue.js :
<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.

  1. Désinfecter et échapper aux entrées utilisateur
    Un autre moyen important de se défendre contre l'injection de base de données est de nettoyer et d'échapper aux entrées utilisateur. En PHP, les entrées utilisateur peuvent être échappées et filtrées à l'aide de fonctions intégrées telles que mysqli_real_escape_string ou à l'aide de filtres prédéfinis tels que filter_var. Voici un exemple d'utilisation de mysqli_real_escape_string :
$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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn