Partage
  • Partager sur Facebook
  • Partager sur Twitter

Sécurité d'une requête login

    12 avril 2024 à 9:22:23

    Bonjour,

    J'aimerais avoir vos avis quant à la sécurité de cette requête et de savoir si je l'ai correctement réalisé ou il y a il une autre méthode afin de ne pas subir d'injontion.

    Merci pour votre aide

    <?php
    require('../connexion/config.php');
    
    session_start();
    if (isset($_POST['username'])){
      $username = stripslashes($_REQUEST['username']);
      $username = mysqli_real_escape_string($conn, $username);
      $password = stripslashes($_REQUEST['password']);
      $password = mysqli_real_escape_string($conn, $password);
        $query = "SELECT * FROM `users` WHERE email='$username' and password='".hash('sha256', $password)."'";
      $result = mysqli_query($conn,$query) ;
      $rows = mysqli_num_rows($result);
      if($rows == 1){
          $_SESSION['username'] = $username;
          header("Location: ../extranet.php");
          exit();
      }else{
        $message = "Le nom d'utilisateur ou le mot de passe est incorrect.";
      }
    }
    ?>



    • Partager sur Facebook
    • Partager sur Twitter
      12 avril 2024 à 11:10:00

      oui mais

      • pas de besoin de stripslashes, les magic_quotes n'existent plus
      • n'échappe pas le mot de passe, tu ne l'utilises pas [tel quel] et tu risquerais d'introduire des échappements avant le hachage
      • tu devrais préparer tes requêtes plutôt que tout échapper toi-même où tout oubli te vaudrait une injection SQL
      • pourquoi stocker le nom de l'utilisateur en session ? S'il y a UNE donnée à y mettre c'est bien la valeur de ta clé primaire (l'id) (dont tu as sans doute besoin pour tes foreign keys)
      • pourquoi faire un SELECT * si tu ne réutilises aucune de ses données ? De plus tu réutilises directement le nom issu du formulaire à celui de la requête
      • on ne se contente jamais de juste hacher, tu dois au moins saler le mot de passe : pourquoi tu n'utilises pas la fonction password_hash ?
      • éviter $_REQUEST, qui prend les données de plusieurs origines, si ça vient d'un formulaire en POST, utilise directement $_POST. L'usage de $_REQUEST fait un peu "je ne sais pas d'où viennent mes données"
      • tu ne testes pas l'existence préalable de la variable $_REQUEST['password']/$_POST['password']

      -
      Edité par julp 12 avril 2024 à 11:44:01

      • Partager sur Facebook
      • Partager sur Twitter

      Sécurité d'une requête login

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      • Editeur
      • Markdown