par
Ryle » 19 juil. 2016, 09:53
Bonjour,
Effectivement, l'extension et les fonctions mysql sont aujourd'hui dépréciées (elles n'évoluent plus et ne sont plus maintenues) et il est recommandé d'utiliser mysqli ou PDO pour les connexions à la base de données. Mais cela concerne l'ensemble de ton site et pas uniquement l'authentification.
Un petit tuto pour passer de MySQL à MySQLi :
faq-tutoriels/passer-mysql-mysqli-pdo-t276282.html
Au delà de obsolescence de ces méthodes, il faudrait aussi je pense apporter une attention particulière à la sécurité. C'est de l'intranet donc pas forcément aussi grave que si c'était en ligne, mais néanmoins, le fait d'avoir des mots de passe en clair dans la base n'est pas une bonne pratique, et le fait de ne pas contrôler/protéger les variables que tu reçois contre les injections avant de les utiliser dans une requête SQL peut également être dangereux.
Par exemple, si l'utilisateur saisi comme mot de passe la valeur "' OR 1=1 LIMIT '0','1", la requête que tu vas exécuter sera la suivante :
SELECT * FROM usersite WHERE username=''AND password='' OR 1=1 LIMIT '0','1'
qui va regarder s'il existe un utilisateur sans nom et sans mot de passe OU si 1 est bien égal à 1... et le voilà connecté avec le premier utilisateur de la liste

Bonjour,
Effectivement, l'extension et les fonctions mysql sont aujourd'hui dépréciées (elles n'évoluent plus et ne sont plus maintenues) et il est recommandé d'utiliser mysqli ou PDO pour les connexions à la base de données. Mais cela concerne l'ensemble de ton site et pas uniquement l'authentification.
Un petit tuto pour passer de MySQL à MySQLi : http://forum.phpfrance.com/faq-tutoriels/passer-mysql-mysqli-pdo-t276282.html
Au delà de obsolescence de ces méthodes, il faudrait aussi je pense apporter une attention particulière à la sécurité. C'est de l'intranet donc pas forcément aussi grave que si c'était en ligne, mais néanmoins, le fait d'avoir des mots de passe en clair dans la base n'est pas une bonne pratique, et le fait de ne pas contrôler/protéger les variables que tu reçois contre les injections avant de les utiliser dans une requête SQL peut également être dangereux.
Par exemple, si l'utilisateur saisi comme mot de passe la valeur "' OR 1=1 LIMIT '0','1", la requête que tu vas exécuter sera la suivante :
[sql]SELECT * FROM usersite WHERE username=''AND password='' OR 1=1 LIMIT '0','1'[/sql]qui va regarder s'il existe un utilisateur sans nom et sans mot de passe OU si 1 est bien égal à 1... et le voilà connecté avec le premier utilisateur de la liste :)