Faire une requête en fonction de l'id du membre
(Nono42) Il n'y a que les boulets qui disent que ça ne marche pas
Si ça ne marche pas, il y a un message d'erreur, s'il y a une message d'erreur, ce serait sympa de l'indiquer.
(Sammuel) $_SESSION est issue d'une source non-sûre, il faut donc sécuriser la donnée avec
mysql_real_escape[/function].
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Vu que tu créé $_SESSION['login'] après avoir vérifié que le compte existe bien via une requête SQL, comment pourrait t'elle être non-sûre ?
$req = mysql_query("SELECT login FROM user WHERE login = '".mysql_real_escape($_POST['login'])."' AND password = '".mysql_real_escape($_POST['password'])."'");
$row = mysql_fetch_assoc($req);
// VERIFIE SI LE COMPTE EXISTE ...
// ET SIL EXISTE ON CREE UNE VARIABLE DE SESSION "LOGIN"
$_SESSION['login'] = $row['login'];
$row['login'] étant une valeur provenant de la BDD et vérifiée via la requête , comment pourrait t'elle être non-sûre ?
Au départ, j'ajouté des mysql_real_escape devant $_SESSION dans mes requêtes, mais après avoir posté un message sur ce forum, on m'a dit que ce n'était pas nécessaire ^^
le 04/08/2008 à 03:50
Keika
Je crois qu'il dit ca parceque les variables globales de session peuvent etre creees depuis un autre site et injectees dans le tiens. Donc si tu fais une requete sans echapper cette variable, des personnes mal intentionnees pourrait, par exemple, utiliser ton login admin et modifier ce qu'ils veulent...
Le PHP --> C'est dur !
Pas vraiment Keika. En fait c'est plus vicieux que ça.
Premièrement, le nom d'utilisateur peut être « Al'fred » :) Et il vaut mieux ne pas faire de supposition sur le nom d'utilisateur plutôt que de se retrouver avec des bogues étranges.
Deuxiement, Sammuel, tu te places dans le script de connexion. Ici il serait effectivement malheureux que la donnée dans le tableau de session ne soit pas fiable, puisque tu es sensé l'avoir validé. Le problème, c'est qu'à la visite suivante, tu ne vérifie pas le login, car le login est en session. À ce moment là, les données en session peuvent très bien avoir été alterées suivant le backend que tu utilises. Surtout si tu es sur un serveur mutualisé, où tu aurais un méchant voisin qui écrit dans ton fichier de session pour te faire une mauvaise blague.
Enfin bref, il faut faire les choses au bon endroit. Les données doivent être sécurisée avant d'être soumise, pas en prévision d'être soumises. Ce serait comme appliquer htmlentities sur une donnée insérée en base de données : c'est un non-sens.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Salut,
Oui moi être petit boulet
Mais heu... j'suis perdu là: le code que m'a donné Sammuel est correct, aucune erreur. En parlant d'erreur, le code que tu m'a donné LupusMic: l'erreur disait Fatal Error (sérieux ça
)
Donc avec ce que je vient de lire le code de Samuel n'est pas sécurisé. Mais comment je le sécurise moi ??
Merci d'avance
@++
Comme ça :
$score = mysql_query("SELECT score FROM membre WHERE login = '".mysql_real_escape_string($_SESSION['login'])."'");
Salut,
Alors ça marche ! Merci à tous ceux qui m'ont aidé (et donc poster dans ce sujet )
@++
C'était quoi l'erreur fatale ?
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Ecrire un message
Votre message vient d'être créé avec succès.
BB-Code
Pour insérer une URL clickable
Pour insérer une adresse E-mail
Pour annoter
Pour écrire du code
Pour faire un lien vers une fonction PHP
Pour écrire du texte préformaté
Pour écrire du texte en gras
Pour écrire du texte en italique
Pour écrire du texte souligné
Pour écrire du texte barré
Pour écrire un titre principal
Pour écrire un titre secondaire
Pour écrire une liste
Smiley
:bond:
:boxe:
:bsmile:
:bump:
:clap:
:coeur:
:cool:
:cry:
:eek:
:evil:
:fleur:
:fou2:
:fou:
:grin:
:grrr:
:hammer:
:hippy:
:hum:
:idee2:
:idee:
:kdo:
:king:
:ko:
:lol:
:love2:
:love:
:mad:
:maitre:
:noel:
:oops:
:raa:
:razz:
:roll:
:sad:
:skull:
:smile:
:timide:
:trink:
:vice:
:vomi:
:wink:
:zzz: