Php/mysql
Fermé
soulblacksamurai
Messages postés
63
Date d'inscription
dimanche 29 mai 2011
Statut
Membre
Dernière intervention
13 avril 2014
-
9 nov. 2011 à 12:26
soulblacksamurai Messages postés 63 Date d'inscription dimanche 29 mai 2011 Statut Membre Dernière intervention 13 avril 2014 - 10 nov. 2011 à 18:39
soulblacksamurai Messages postés 63 Date d'inscription dimanche 29 mai 2011 Statut Membre Dernière intervention 13 avril 2014 - 10 nov. 2011 à 18:39
A voir également:
- Php/mysql
- Easy php - Télécharger - Divers Web & Internet
- Mysql community server - Télécharger - Bases de données
- Mysql gratuit ou payant - Forum MySQL
- Bouton php - Forum PHP
- Php?id=1 - Forum PHP
2 réponses
Reivax962
Messages postés
3672
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 011
Modifié par Reivax962 le 9/11/2011 à 15:58
Modifié par Reivax962 le 9/11/2011 à 15:58
Bonjour,
Alors, j'aurais plusieurs remarques sur ton code, pas toutes en rapport avec la sécurité.
- Pour les injections SQL, une règle de base, c'est de ne jamais JAMAIS mettre directement $_POST[] dans l'écriture de la requête.
Tous les champs texte non transformés doivent être échappés au moyen de la fonction mysql_real_escape_string().
- Ta base de données est fragile, car les mots de passe n'y sont pas cryptés. Le cryptage md5() est simple à réaliser et n'est pas réversible (sauf par dictionnaire... on peut donc le « saler » en modifiant la chaîne à l'entrée).
Il suffit d'utiliser la fonction php md5() pour réaliser le cryptage, à l'insertion / modification des données de l'utilisateur, ainsi qu'à la lecture.
- Dans ton code, tu testes deux fois si login et mot de passe sont bons : une fois dans la requête, puis une fois sur le résultat de la requête. Ce deuxième test ne sert à rien.
Du coup, à ta place, je mettrais le code suivant :
Alors, j'aurais plusieurs remarques sur ton code, pas toutes en rapport avec la sécurité.
- Pour les injections SQL, une règle de base, c'est de ne jamais JAMAIS mettre directement $_POST[] dans l'écriture de la requête.
Tous les champs texte non transformés doivent être échappés au moyen de la fonction mysql_real_escape_string().
- Ta base de données est fragile, car les mots de passe n'y sont pas cryptés. Le cryptage md5() est simple à réaliser et n'est pas réversible (sauf par dictionnaire... on peut donc le « saler » en modifiant la chaîne à l'entrée).
Il suffit d'utiliser la fonction php md5() pour réaliser le cryptage, à l'insertion / modification des données de l'utilisateur, ainsi qu'à la lecture.
- Dans ton code, tu testes deux fois si login et mot de passe sont bons : une fois dans la requête, puis une fois sur le résultat de la requête. Ce deuxième test ne sert à rien.
Du coup, à ta place, je mettrais le code suivant :
<?php include("bddconnect.php"); mysql_select_db($database) or die("erreur de connexion à la base de données"); $username = isset($_POST['username']) ? mysql_real_escape_string($_POST['username']) : ''; $password = isset($_POST['password']) ? md5($_POST['password']) : ''; $query = "SELECT username FROM identifiant WHERE password = '$password' AND username = '$username'; $ok = mysql_query($query); $row = mysql_num_rows($ok); if($row == 0) { echo 'Echec de la connexion'; } else { echo 'Connexion réussie'; } ?>
soulblacksamurai
Messages postés
63
Date d'inscription
dimanche 29 mai 2011
Statut
Membre
Dernière intervention
13 avril 2014
3
10 nov. 2011 à 18:39
10 nov. 2011 à 18:39
Mias crypter c'est quoi exactement ? Pourquoi ma bdd est plus fragile sans ? Peux tu me montrer la manière de "pirater" ce code par un exemple ?
Parceque pour l'instant je connais quelques façon d'écrire ce genre de code (identifiaction, bdd etc....) et de les sécurisés mais sans comprendre le "pourquoi du comment".
Ces réponses m'aideraient beaucoup.
Merci de ton aide !
(PS: merci pour l'amélioration du code)
Parceque pour l'instant je connais quelques façon d'écrire ce genre de code (identifiaction, bdd etc....) et de les sécurisés mais sans comprendre le "pourquoi du comment".
Ces réponses m'aideraient beaucoup.
Merci de ton aide !
(PS: merci pour l'amélioration du code)