problèmes procédures stockées

  • Auteur de la discussion Auteur de la discussion teamlulu
  • Date de début Date de début
Nouveau WRInaute
Bonjour je suis bloqué au niveau de la sécurisation de la connexion à mon site, je souhaite utiliser des procédures stockées pour sécuriser mes variables pseudo et mdp pour éviter l'injection sql
j'ai fait un code qui est vulnérables aux injections et maintenant je cherche à le sécuriser .
voila mon code qui est vulnérables aux injections sql :
if(isset($_POST['envoi'])){
if(!empty($_POST['pseudo']) AND !empty($_POST['mdp'])){
$pseudo = $_POST['pseudo'];
$mdp = $_POST['mdp'];
$exec_recupUser = $bdd->query("SELECT count(*) FROM users
WHERE pseudo = '".$pseudo."' AND mdp = '".$mdp."' ");
$reponse = $exec_recupUser->fetchAll()[0];
$count = $reponse['count(*)'];
if($count!=0){
header('Location: post_connexion.php');
}else{
echo "votre mot de passe ou pseudo est incorrect";
}

}else{
echo"veuillez renseignez tous les champs...";
}
}

je voudrais créer une procédures stockée pour sécuriser mes 2 variables mais je n'y arrive pas du tout
 
WRInaute impliqué
Alors, pour l'injection à proprement parler, mysqli_real_escape_string peut convenir. Toutefois en PHP, les PDO sont recommandées (https://cheatsheetseries.owasp.org/cheatsheets/SQL_Injection_Prevention_Cheat_Sheet.html). Pour être honnête, je ne sais pas trop pourquoi mysqli_real_escape_string est considéré comme moins sûr que PDO, je suppose parce qu'il n'est pas systématique et qu'il faut donc le préciser pour chaque variable.

Ceci précisé, il faut revoir intégralement la procédure d'authentification : jamais de stockage en clair du mot de passe, pas de comparaison directe, etc. (https://cheatsheetseries.owasp.org/cheatsheets/Password_Storage_Cheat_Sheet.html). password_hash et password_verify sont prêtes à l'emploi en PHP, il faut les utiliser.

De grâce, s'abstenir des scripts "maisons" dès qu'il s'agit de sécurité.
 
Nouveau WRInaute
Alors, pour l'injection à proprement parler, mysqli_real_escape_string peut convenir. Toutefois en PHP, les PDO sont recommandées (https://cheatsheetseries.owasp.org/cheatsheets/SQL_Injection_Prevention_Cheat_Sheet.html). Pour être honnête, je ne sais pas trop pourquoi mysqli_real_escape_string est considéré comme moins sûr que PDO, je suppose parce qu'il n'est pas systématique et qu'il faut donc le préciser pour chaque variable.

Ceci précisé, il faut revoir intégralement la procédure d'authentification : jamais de stockage en clair du mot de passe, pas de comparaison directe, etc. (https://cheatsheetseries.owasp.org/cheatsheets/Password_Storage_Cheat_Sheet.html). password_hash et password_verify sont prêtes à l'emploi en PHP, il faut les utiliser.

De grâce, s'abstenir des scripts "maisons" dès qu'il s'agit de sécurité.
je dois presenter un site vulnérable aux injections SQL puis le protéger grâce aux procédures stockées, malheuresement les liens que vous m'avez envoyez ne m'aident pas beaucoup car ils ne présentent pas de code sql pour les procédures stockées
 
WRInaute impliqué
Bonjour je suis bloqué au niveau de la sécurisation de la connexion à mon site, je souhaite utiliser des procédures stockées pour sécuriser mes variables pseudo et mdp pour éviter l'injection sql
Je crois que tu confonds procédures stockées et "requêtes préparées".
https://www.ionos.fr/digitalguide/sites-internet/developpement-web/prepared-statements-phpmysql/
Mais surtout, suis le conseil de emualliug : ON NE STOCKE PAS LES MOTS DE PASSE EN CLAIR.
 
WRInaute impliqué
je dois presenter un site vulnérable aux injections SQL puis le protéger grâce aux procédures stockées

Est-ce un exercice ?

Si c'est le cas ça excuse (un peu) les autres défauts du code et explique pourquoi il faudrait passer sur une procédure stockée ce qui n'est pas le moyen le plus commode pour se prémunir d'une injection (raison pour laquelle les docs que j'ai liés n'y font pas référence, ce n'est pas un moyen recommandé pour cet objectif).
 
Discussions similaires
Haut