Aide securisation d'un code de connexion
geoffreyvp
-
avion-f16 Messages postés 19254 Date d'inscription Statut Contributeur Dernière intervention -
avion-f16 Messages postés 19254 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour a tous,
voila j'ai recemment recu dans ma base de donnees , une injection sql "\'"
je l'ai recu car mon ami s'est inscrit avec celle ci pour voir mes failles.
Mais voila j'essaie de le securiser avec mes mysql_real_escape_string(htmlspecialchars
mais maintenant ma page ne marche plus...
est ce que vous trouvez une erreur dans ce code ci dessous??
j'ai recopié 2 fois la ligne avec $ pseudo au debut mais je crois que une suffit amplement non??
voila j'ai recemment recu dans ma base de donnees , une injection sql "\'"
je l'ai recu car mon ami s'est inscrit avec celle ci pour voir mes failles.
Mais voila j'essaie de le securiser avec mes mysql_real_escape_string(htmlspecialchars
mais maintenant ma page ne marche plus...
est ce que vous trouvez une erreur dans ce code ci dessous??
<?php session_start(); $pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo'])); $_SESSION['pseudo'] = "$pseudo"; ?> <?php $pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo'])); if($pseudo == ""); { echo 'bien essayé mais ca marchera pas'; } else { --> la connexion <-- $sql = "SELECT password FROM membres WHERE pseudo='".$pseudo."'"; $req = mysql_query($sql) or die('Erreur SQL !'); $data = mysql_fetch_assoc($req); if($data['mot_passe'] == $pass) { echo 'connexion reussie'; header ('location: zonemembre.php'); } else { echo 'votre mot de passe est incorrect ou bien inconnu'; } } ?>
j'ai recopié 2 fois la ligne avec $ pseudo au debut mais je crois que une suffit amplement non??
A voir également:
- Aide securisation d'un code de connexion
- Gmail connexion - Guide
- Code ascii - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
- Code puk bloqué - Guide
- Code activation windows 10 - Guide
7 réponses
Salut.
- Ligne 4 : Inutile
- Lignes 5 et 6 : Elles ne servent à rien
- Ligne 7 : copie de la ligne 3 : $pseudo est déjà protégée
- Ligne 8 : Il ne faut pas de point-virgule dans les structures conditionnelles
- Ligne 14 : On utilise deux slashes pour mettre une ligne en commentaire
Dans ta requêtes SQL : 'SELECT password [...]'
Dans la condition : $data['mot_passe']
Toujours dans la condition, d'où vient $pass ?
Pour finir, tu ne peux pas utiliser header() après l'envoie du texte au navigateur (cf. ligne précédente).
- Ligne 4 : Inutile
- Lignes 5 et 6 : Elles ne servent à rien
- Ligne 7 : copie de la ligne 3 : $pseudo est déjà protégée
- Ligne 8 : Il ne faut pas de point-virgule dans les structures conditionnelles
- Ligne 14 : On utilise deux slashes pour mettre une ligne en commentaire
Dans ta requêtes SQL : 'SELECT password [...]'
Dans la condition : $data['mot_passe']
Toujours dans la condition, d'où vient $pass ?
Pour finir, tu ne peux pas utiliser header() après l'envoie du texte au navigateur (cf. ligne précédente).
<?php session_start(); $pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo'])); if($pseudo == "") { echo 'bien essayé mais ca marchera pas'; } else { mysql_connect('sql200.hebergratuit.com','rober_6835970','florian'); mysql_select_db('rober_6835970_codcmoh'); $sql = "SELECT password FROM membres WHERE pseudo='".$pseudo."'"; $req = mysql_query($sql) or die('Erreur SQL !'); $data = mysql_fetch_assoc($req); if($data['mot_passe'] == $_POST['password']) { header ('location: zonemembre.php'); } else { echo 'votre mot de passe est incorrect ou bien inconnu'; } } ?>
voila un code corrigé mais ca ne marche toujours pas . (ca me met toujours mon "bien essayé mais ca marchera pas"
y aurait il un probleme avec ma condition ??
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Voici l'evolution de mon code :
<?php session_start(); $pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo'])); $password = md5(mysql_real_escape_string(htmlspecialchars($_POST['password']))); ?> <?php if(empty($pseudo)) { echo 'bien essayé mais ca marchera pas'; } else { //la connexion invisible bien sur $sql = "SELECT password FROM membres WHERE pseudo='".$pseudo."'"; $req = mysql_query($sql) or die('Erreur SQL !'); $data = mysql_fetch_assoc($req); if($data['password'] == $password) { echo 'Vous etes connecté'; header ('location: zonemembre.php'); } else { echo 'votre mot de passe est incorrect ou bien inconnu'; } } ?>
Salut.
- Pour utiliser mysql_real_escape_string(), une connexion à MySQL doit être active.
- Avant d'utiliser les variables $_POST, il faut vérifier si elles existent.
- Pour le pseudo, il faut également supprimer les espaces en début et fin avec trim()
- Il faut aussi vérifier si le membre existe sinon mysql_fetch_assoc() retournera false, donc $data['password'] n'existera pas, et tu auras une erreur "index is not defined"
- Pour des raisons de sécurité, j'ai pour habitude de n'afficher qu'un seul message en cas d'erreur, sans préciser si ce qui pose problème est le mot de passe ou si le membre n'existe pas.
Essaye avec ça :
https://gist.github.com/406ec42f9994c93cd2f0
(je ne l'ai pas testé avant, il peut y avoir des erreurs)
- Pour utiliser mysql_real_escape_string(), une connexion à MySQL doit être active.
- Avant d'utiliser les variables $_POST, il faut vérifier si elles existent.
- Pour le pseudo, il faut également supprimer les espaces en début et fin avec trim()
- Il faut aussi vérifier si le membre existe sinon mysql_fetch_assoc() retournera false, donc $data['password'] n'existera pas, et tu auras une erreur "index is not defined"
- Pour des raisons de sécurité, j'ai pour habitude de n'afficher qu'un seul message en cas d'erreur, sans préciser si ce qui pose problème est le mot de passe ou si le membre n'existe pas.
Essaye avec ça :
https://gist.github.com/406ec42f9994c93cd2f0
(je ne l'ai pas testé avant, il peut y avoir des erreurs)