2009-12-05 8 views
0

Que pensez-vous de cette procédure de connexion? est-ce assez sûr?php secure login

Quand ils se connecter i d'abord vérifier que le nom d'utilisateur existe, si elle i ne saisit le sel (tous les utilisateurs ont le sel unique) de l'utilisateur, que je re-hachage avec mot de passe affiché le

$pass = hash('sha256', $salt . $posted_password);

et puis je viens de comparer avec

$check = mysql_query("SELECT * FROM users WHERE username = '".$username."' AND password = '".$pass."'") or die("MySQL Error: ".mysql_error()); 
+0

Je ne comprends pas comment hachage supplémentaire de le mot de passe améliore la sécurité dans cette situation, attention à élaborer? Je suis curieux. –

+0

Il aide dans le cas où le serveur de base de données est piraté, et les données de ce qui est divulgué, dans ce cas tous les crackers obtiendront les mots de passe hachés, ce qui ne leur est pas vraiment utile ... (à l'exception de règle qui s'applique, en utilisant des attaques arc-en-ciel etc.) –

Répondre

2

Ce n'est pas sûr.

Utilisez des requêtes paramétrées ou utilisez mysql_real_escape_string pour vous assurer que vous empêchez les injections SQL.

Autre que cela, c'est une technique de connexion très commune, et est fondamentalement le "standard".

Lien ici de plus de sécurité d'injection: How can I prevent SQL injection in PHP?

+0

ofc j'utilise mysql_real_escape_string je ne veux pas afficher tout le code – Tony

+5

@Tony Donc en d'autres termes ce que vous dites est "est mon code que je ne vous montre pas en sécurité?" – Yacoby

3

Je ne pense pas que ce soit une bonne idée d'afficher l'erreur mysql sur défaut.

or die("MySQL Error: ".mysql_error()); 

Quand il vient à cela, je dirais que le moins d'informations vous sont revenus le mieux. Donner des informations qui pourraient indiquer à la personne qui tente la connexion si le nom d'utilisateur ou le mot de passe a échoué n'est pas bon, cela va aussi bien que dire à l'utilisateur quel type de base de données vous utilisez, comment il est interrogé, etc. En outre, nous réalisons que la sécurité la plus fréquente dans de telles situations est surmontée grâce à l'ingénierie sociale, et dans ce cas, peu importe la façon dont vous traitez les données, etc. (pas ce que vous ne devriez pas). dire que la sécurité est beaucoup, et il ne se limite pas à la façon dont vous stockez et récupérez des données. Par exemple, la connexion est-elle effectuée via une ligne cryptée? Existe-t-il une application de la force du mot de passe de l'utilisateur? Que se passe-t-il après que l'utilisateur est connecté, comment suivez-vous les utilisateurs connectés par rapport à ceux qui visitent simplement le site? Comment empêchez-vous les reprises de session, etc. Je ne suis pas un expert sur le sujet, mais c'est un sujet vaste. Peut-être que vous vouliez juste un commentaire sur le code que vous avez posté, auquel cas mon premier paragraphe aurait dû être tout ce que vous deviez lire;) avec la réponse de Crowe T. Robot :)