PHP Secure Login - mot de passe de cryptage
Ici est le système de connexion à laquelle la connexion sécurisée est mise en œuvre/
main_login.php
<form name="form1" method="post" action="checklogin.php">
Username:<input name="myusername" type="text" id="myusername" /> <br />
Password:<input name="mypassword" type="password" id="mypassword" />
<input type="submit" name="Submit" value="Login" />
</form>
Checklogin.php
<?php
ob_start();
$host="localhost"; //Host name
$username="root"; //Mysql username
$password=""; //Mysql password
$db_name="cosmos"; //Database name
$tbl_name="members"; //Table name
//Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
//Define $myusername and $mypassword
$myusername=$_POST['myusername'];
$mypassword=$_POST['mypassword'];
//To protect MySQL injection (more detail about MySQL injection)
$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);
$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'";
$result=mysql_query($sql);
//Mysql_num_row is counting table row
$count=mysql_num_rows($result);
//If result matched $myusername and $mypassword, table row must be 1 row
if($count==1){
//Register $myusername, $mypassword and redirect to file "login_success.php"
session_register("myusername");
session_register("mypassword");
header("location:login_success.php");
}
else {
echo "Wrong Username or Password";
}
ob_end_flush();
?>
login_success.php
<?php
session_start();
if(isset($_SESSION['username']) && ($_SESSION['username'] == $myusername)){
header("location:main_login.php");
}
?>
<html>
<body>
Login Successful. <a href="logout.php">Logout</a>
</body>
</html>
logout.php
<?php
session_destroy();
header("location:main_login.php");
?>
le problème est que je veux faire une connexion sécurisée par cryptage de mot de passe ou toute autre méthode (le cas échéant). Je suis débutant en PHP
qu'est-ce exactement que vous voulez chiffrer et pourquoi?
Vous devez utiliser le type
Vous devez utiliser le type
password
de passe pour les champs de saisie.OriginalL'auteur Suraj Thapar | 2010-08-28
Vous devez vous connecter pour publier un commentaire.
Vous pouvez crypter le mot de passe d'un degré à l'aide de md5. Vous devez md5 du mot de passe lorsque l'utilisateur s'inscrit et avant que la connexion md5....
Exemple:
//Define $myusername and $mypassword
$myusername=$_POST['myusername'];
$mypassword=$_POST['mypassword'];
$mypassword = md5($mypassword);
Vous aussi, vous avez besoin d'utiliser ce que vous avez une connexion de l'utilisateur.
OriginalL'auteur phpPig
En tant que débutant, le plus probable que vous n'avez pas besoin de chiffrement des données. Surtout parce qu'il serait de Javascript, pas de PHP.
Bien qu'il peut être fait.
Vous pouvez utiliser haché défi de la mise en œuvre de l'authentification Digest schéma
Il y a beaucoup de Javascript algorithme de hachage MD5 implémentations sur internet.
De cours, un certificat SSL aurait préféré plus de cette maison mise en œuvre.
Mais pour obtenir la bonne réponse, vous avez encore besoin de clarifier exactement ce que vous voulez chiffrer et pourquoi. Et pourquoi ne pas vous inquiet au sujet de la sécurisation de quelque chose d'autre. L'ensemble de votre base de données par exemple.
Quelques notes pendant un certain temps.
Votre login_success code ne soit pas de travail et protège rien.
Il doit être juste
car il n'y a pas de $myusername variable à comparer.
Et il devrait y avoir
exit;
juste aprèsheader("location:...
Ou un client obtiendra contenus protégés de toute façon
comment venir? Je ne vois aucune façon
Un man-in-the-middle pouvez soit modifier le Javascript envoyé au client (par exemple, supprimer un code de chiffrement) ou poser en tant que serveur. Une vraie connexion SSL sécurisée fonctionne avec les certificats de vous assurer que le serveur de votre parler est en effet le serveur que vous voulez parler.
Ouais, c'est vrai. Quelle sottise de moi.
OriginalL'auteur Your Common Sense
Vous pouvez utiliser md5($password) ou sha1($password) lors de l'insertion de l'inscription des données à table.
pour correspondre à nouveau pour la connexion de connexion
$sql="SELECT * from $nom_table where username='$myusername' and password='".md5($monmot)."'";
$result=mysql_query($sql);
Il y a une autre manière aussi, pour protéger les autres. À l'aide de la combinaison de sha1 et le sel.
Par le chemin, pourquoi ne pas utiliser une partie rapide framework php coz ces petites choses sont déjà construit avec eux.
Grâce
OriginalL'auteur Pramendra Gupta
Pour rendre cela un peu plus sécurisé, il est recommandé de stocker les mots de passe cryptés dans votre base de données, puis de comparer le cryptage de mot de passe entrés avec le hash stocké. De cette façon, si quelqu'un en quelque sorte accède à la table des membres, ils ne peuvent pas voir les mots de passe.
Supposons que le mot de passe est
myPassword
alors ne vous contentez pas de les stocker, de hachage d'abord à l'aide d'un algorithme de typemd5
puis stocker le hash qui estdeb1536f480475f7d593219aa1afd74c
dans votre base de données. Ensuite, lorsque l'utilisateur entre un mot de passe, de hachage et de comparer les deux tables de hachage.Afin de sécuriser davantage l'approche, de l'utilisation SSL.
OriginalL'auteur Hamid Nazari
Vous devez utiliser
Vous devez stocker le mot de passe haché et le hachage des mots de passe avant de les comparer à celui qui est stocké. md5 n'est pas adapté pour le hachage des mots de passe, voir:
http://uk1.php.net/manual/en/faq.passwords.php#faq.passwords.fasthash
Vous devriez également envisager l'utilisation de sels
Je suis d'accord Si vous prenez un regard sur les deux liens que j'ai inclus dans ma réponse le PHP docs parle adapté les algorithmes de hachage, mais je pense que sha512 est le meilleur choix que sha1 donc je vais le changer dans ma réponse et j'ai également fournir un lien avec des infos sur les sels que je vais aussi ajouter dans ma réponse.
Je comprends que vous ne souhaitez améliorer la accepté de répondre, mais c'est un fil très vieux, et il serait préférable de le signaler dans un commentaire sur la réponse. Votre exemple est toujours très dangereux façon de hachage de mot de passe statique sel ne peut pas être compté comme le sel, et SHA512 est pas encore approprié. Je voudrais vous inviter à lire mon tutoriel sur mot de passe sûr de stocker.
OriginalL'auteur nettux
Normalement vous devez stocker une table de hachage des mots de passe dans la base de données voir md5 cependant, ce n'est pas sûr entre la page web et le serveur - pour cela, vous devez utiliser le protocole https.
Il y a deux choses ici.
1.
Si je suis un utilisateur idiot et quand je m'inscrire à votre site, je dois donner un mot de passe, je peut donner le même mot de passe que j'ai utilisé ailleurs, de sorte que votre site devrait vraiment stocker une valeur de hachage du mot de passe au lieu de la vraie chose, donc si ils ont piraté les attaquants n'aura pas mon mot de passe que j'ai utilisé partout. Pour ce faire, vous stocker le hash dans vos membres de la table et dans la requête qui vérifie qu'elle est valide, on passe un hash au lieu de la vraie chose.
2.
En vertu de http le mot de passe sera envoyé à partir du navigateur vers le serveur en texte brut. Si c'est sur internet et un attaquant a accès à tous les réseaux entre le navigateur et le client, puis ils peuvent voir le mot de passe - si vous hachage dans le navigateur à l'aide de javascript, l'attaquant peut récupérer le hash et éventuellement utiliser pour vous connecter à votre site. C'est pourquoi nous avons https. Pour un faible coût (surtout par rapport aux coûts de développement), vous pouvez acheter un certificat pour sécuriser la connexion. Si vous ne voulez pas faire cela, vous pouvez soi signer un certificat et d'utiliser cette. Si votre hébergeur ne vous permet pas d'utiliser un certificat, alors qu'il pourrait être possible de créer un home brew solution, mais il est beaucoup mieux de trouver d'autres d'hébergement.
SSL n'a rien à faire ici de toute façon. il est protégé stockage de mot de passe, pas de connexion système tout le monde en parle.
voir mon edit - mais comme quelqu'un l'a mentionné, peut-être vous devriez essayer quelques cms open source avant d'essayer de mettre en place votre propre.
OriginalL'auteur Adam Butler
md5 serait la meilleure dans ce cas. Exécutez l'Entrée des Détails tels que le Mot de passe par le biais de la fonction MD5 et insérez-les dans votre base de données.
Près de unreverseable donc la seule façon de l'utiliser est d'utiliser MD5 lors de la connexion, aussi et compair le md5 du mot de passe de connexion avec la version stockée dans la base de données.
OriginalL'auteur Christopher Shaw