Accueil > > > VÉRIFICATION DE LOGIN VIA HASH MD5
VÉRIFICATION DE LOGIN VIA HASH MD5
Information sur la source
Description
Bah voila, dans ma nuit, je me suis posé une question (depuis la source de Coucou d'ailleurs !) : Comment peut-on réussir à ne plus se faire chier entre les addslashes et autres ? Et la, une idée m'est venue : l'utilisation d'un hash. Que ce soit via MD5, SHA-1, ou un moyen de cryptage quelconque, tous les caractères de type ' \ * # risquaient fort bien de disparaitre dans le hash ! Alors, j'ai fais ce bout de code avec du hash MD5, mais il vaut mieux que vous preniez autre chose ( SHA-1 est un peu plus sécurisé du haut de ces 40 bits :p). Voila comment j'ai fais :
Source
- <?php
- function login($login, $password) {
-
- if ( strlen($login) < 4 ) return false; // Si le login est inférieur à 4 charactères, on arrète tout.
-
- $password = md5($password);
- $login = trim($login);
-
- // Le plus important : la commande de query. J'utilise strtolower pour supprimer la casse.
- $query = mysql_query("SELECT COUNT(*) FROM users WHERE MD5(login) = '".md5($login)."' AND password = '".$password."' ");
- $data = mysql_fetch_row($query);
-
- // Si il existe un enregistrement (le login étant unique pour chaque personne), alors c'est bon :)
- return ( $data[0] == 1 ) ? true : false;
-
- }
-
- // Si le formulaire est soumis
- if ( isset($_POST['submit']) ) {
- if ( login($_POST['login'], $_POST['password'] ) { // Si la fonction ci-dessus est TRUE (vrai)
- session_start();
- $_SESSION['logged_in'] = true; // On met ca en session
- header('Location: private.php');
- die(); // Etre sûr que la fin de cette page ne sera pas pris en compte
- } else {
- $warning = 'Le couple login/password que vous avez entrez est incorrect'; // si la fonction renvoit false, on se fait une variable d'erreur
- }
- }
-
- if ( isset($warning) ) { // Test de présence de la variable d'erreur
- echo '<p>'.$warning.'</p>';
- }
-
- // Affichage du formulaire
- ?>
- <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
- <fieldset>
- <legend>Login</legend>
- <label for="login">Login :</label>
- <input type="text" name="login" id="login"/>
- <label for="password">Mot de passe :</label>
- <input type="password" name="password" id="password"/>
- <input type="submit" name="log" value="Se connecter"/>
- </fieldset>
- </form>
<?php
function login($login, $password) {
if ( strlen($login) < 4 ) return false; // Si le login est inférieur à 4 charactères, on arrète tout.
$password = md5($password);
$login = trim($login);
// Le plus important : la commande de query. J'utilise strtolower pour supprimer la casse.
$query = mysql_query("SELECT COUNT(*) FROM users WHERE MD5(login) = '".md5($login)."' AND password = '".$password."' ");
$data = mysql_fetch_row($query);
// Si il existe un enregistrement (le login étant unique pour chaque personne), alors c'est bon :)
return ( $data[0] == 1 ) ? true : false;
}
// Si le formulaire est soumis
if ( isset($_POST['submit']) ) {
if ( login($_POST['login'], $_POST['password'] ) { // Si la fonction ci-dessus est TRUE (vrai)
session_start();
$_SESSION['logged_in'] = true; // On met ca en session
header('Location: private.php');
die(); // Etre sûr que la fin de cette page ne sera pas pris en compte
} else {
$warning = 'Le couple login/password que vous avez entrez est incorrect'; // si la fonction renvoit false, on se fait une variable d'erreur
}
}
if ( isset($warning) ) { // Test de présence de la variable d'erreur
echo '<p>'.$warning.'</p>';
}
// Affichage du formulaire
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
<fieldset>
<legend>Login</legend>
<label for="login">Login :</label>
<input type="text" name="login" id="login"/>
<label for="password">Mot de passe :</label>
<input type="password" name="password" id="password"/>
<input type="submit" name="log" value="Se connecter"/>
</fieldset>
</form>
Conclusion
Alors par contre, je n'ai pas eu le temps de le tester, car mon serveur apache connait quelque problème en local chez moi. Je poste quand même la source, si quelqu'un trouve mieux ou alors me dit que ca marche pas, au moins je serais fixé :)
voila :)
PS : J'ai peut-être fait une erreur de placement etre MD5() et LOWER() et entre md5() et strtolower(). Je sais plus dans quel ordre PHP lit =)
Historique
- 11 octobre 2005 23:04:49 :
- J'ai enlevé le LOWER() et strtolower() vu que d'après Antho, les champs de types VARCHARS sont insensibles à la casse
- 11 octobre 2005 23:12:46 :
- Je re-update vite fait, histoire de montrer un exemple.
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Cryptage Sha [ par adeliz ]
Bonjour.Voila, pour plus de sécurité (et pour ma culture perso :) ), je voudrais savoir comment crypter une phrase... Pour le moment j'arrive à le fai
MD5 - Visualisation du cryptage [ par sebounet62 ]
Bonjour,Je recherche à afficher la valeur d'un MD5.<?php$str = 'pomme';md5($str);echo '$str'?> J'ai tenté de faire ce code mais cela ne fonction
Authentification par challenge MD5 [ par psyjc ]
Bonjour tout le monde,j'ai code un petit script d'authentification login/pass PHP qui fonctionne sur le principe d'un challange par MD5.le code est re
Problème avec MD5 [ par debbv ]
Salut à tous , Je viens par ce message vous présenter une faille que j'ai avec une application que j'ai eu à developper. La faille se trouve au nivea
Base de hash MD5 [ par hazkaal ]
Bonjour,Voici une base de hash MD5 que j'ai développé en PHP.On peut : -ajouter un mot dont sa valeur md5 sera ajoutée dans un dictionnaire -rech
securite et cryptage [ par renaud288 ]
Vu le nombre important de demande au sujet de la sécurité de mots de passe transmis, je vais faire un truc général.Bon nombre d'entre vous (les débuta
cryptage [ par huricane ]
Bonjour, J'ai un problème pour crypter de simple mot de passe dans une base de donnée. Je suis sous postgresql et je dispose d'une table utilisateur o
code pour cryptage MD5 en série [ par yaca ]
Bonjour, Je suis débutant essaie de comprendre ce qui se passe dans vos lignes, mais je ne sais encore écrire seul!! Je voudrais crypter MD5 en série
code pour cryptage MD5 en série [ par yaca ]
Bonjour, J'ai une bdd Mysql où j'ai des mots de passe en clair. J'aimerais les coder MD5 en série, mais ne connais pas la programmation. J'ai bien réu
problème avec requete sql et php [ par machmacha ]
bonjour,j'ai une requête simple sur php la voilà:$sql = mysql_query("SELECT * FROM test WHERE login='".$_POST['log
|
Derniers Blogs
GESTION D'EXCEPTION AVEC LES TASKSGESTION D'EXCEPTION AVEC LES TASKS par richardc
Nous avons vu dans un précédent article comment utiliser Task pour effectuer des opérations dans un autre thread.
Malheureusement, comme tout le monde n'est pas parfait, il se peut que cette exécution se passe mal et qu'une exception se produise.
La...
Cliquez pour lire la suite de l'article par richardc DéMARRONS AVEC LES TASKSDéMARRONS AVEC LES TASKS par richardc
Que vous le vouliez ou non, le développement multi-tâche est maintenant une obligation pour toute nouvelle application. Il est donc vital d'en comprendre les mécanismes et de s'y mettre le plus tôt possible.
En attendant le .NET Framework 4.5 avec le...
Cliquez pour lire la suite de l'article par richardc SLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPSSLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPS par Vko
Retrouvez les slides et les démo de ma session Fast & Furious XAML Apps. A ceux qui se posent la question : "est-ce que le code de la DataGrid est disponible?", je vous répondrais "pas encore". Je vais mettre en place un projet codeplex pour part...
Cliquez pour lire la suite de l'article par Vko XNA IS DEAD!XNA IS DEAD! par richardc
Depuis la semaine dernière (et grâce aux TechDays 2012), je me penche activement sur la nouvelle version de Windows, aka Windows 8. Vous me direz, il était temps puisque la première preview date de Septembre dernier.
OK. Remarquez, on n'en est qu'aux...
Cliquez pour lire la suite de l'article par richardc TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 !TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 ! par ROMELARD Fabrice
Speakers: Fabrice Meillon et Stanislas Quastana Cette session est basée entièrement sur celle donnée lors de la BUILD cet hiver. Il n'y a pas d'ajout d'information en rapport avec cet évènement passé. Windows 8 Server sera intégralem...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|