Je pense avoir trouvé un moyen de créer un système de session sécurisé, qui n'accepte pas les injections SQL, et sans passer par mysql_real_escape_string() ou autre moyen de ce type, mais j'aimerai vos avis sur ce script, si il vous emble sécurisé ou non.
// si une demande d'authentification est faite
if(isset($_POST['auth'])) {
$sql = "SELECT user_pass
FROM users
WHERE user_login = '".$_POST['login']."'";
$query = mysql_query($sql) OR die('Error : '.mysql_error());
$result = mysql_fetch_assoc($query);
if($result['user_pass'] == md5($_POST['pass'])) {
// on ouvre la session
echo 'ok';
}
}
Le principe de l'injection SQL est de faire rajouter une égalité parfaite dans la requete, lorsque la requete cherche une ligne ou coïncide un login et un password fourni dans un formulaire. Or, dans le script que je viens d'afficher, la requete ne cherche que le login dans la base de donnée, et c'est le PHP qui se charge de regarder si il y'a une égalité entre le mot de passe trouvé dans la base, et celui fourni par l'utilisateur. Je me laisse donc à penser que ce script est sécurisé contre les injections SQL. Qu'en pensez-vous ? Reste t'il d'autres moyens de hacker un formulaire de session, auxquels je n'aurai pas pensé ?