SQL injection
voila le code :
<?php
$sql = 'SELECT id FROM admin WHERE pseudo="'.$pseudo.'" AND pass="'.$hasch.'"';
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
$nombre = mysql_num_rows ($req);
if ($nombre == 0){
mysql_free_result($req);
mysql_close();
$erreur = "Pseudo ou mot de passe inconnu.";
}
elseif ($nombre == 1) {
mysql_free_result($req);
mysql_close();
$cookie = $pwd;
$expire=365*24*3600;
setcookie("MEMBRE","$cookie",time()+$expire,"/");
echo '<body onLoad="alert(\'Bienvenue '.ucfirst($pseudo).'\nVous pouvez à présent accéder à l\\\'interface d\\\'administration via le lien apparu en bas à droite\n\nN\\\'oubliez pas de vous déconnecter avant de fermer le site\')">';
redirection("http://81.57.242.24/CRIF/index.php");
exit;
}
?>
Voilà rien de plus...
Y te plait le site ???
Anasha [php-kiche-nomore]
le 15/02/2005 à 01:50
Bzh
Tu devrais changer certaine chose:
<?php
//on lance les sessions
session_start();
//requètte maintenant protègé contre les injections
$sql = 'SELECT id FROM admin WHERE pseudo="'.mysql_escape_string($pseudo).'" AND pass="'.mysql_escape_string($hasch).'"';
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
$nombre = mysql_num_rows ($req);
if ($nombre == 0){
mysql_free_result($req);
mysql_close();
$erreur = "Pseudo ou mot de passe inconnu.";
}
elseif ($nombre == 1) {
mysql_free_result($req);
mysql_close();
//Les cookies sont modifiables très dangereux
//$cookie = $pwd;
//$expire=365*24*3600;
$_SESSION['MEMBRE'] = $pwd;
//cookie à éviter pour les gestions de membres
//setcookie("MEMBRE","$cookie",time()+$expire,"/");
echo '<body onLoad="alert(\'Bienvenue '.ucfirst($pseudo).'\nVous pouvez à présent accéder à l\\\'interface d\\\'administration via le lien apparu en bas à droite\n\nN\\\'oubliez pas de vous déconnecter avant de fermer le site\')">';
redirection("http://81.57.242.24/CRIF/index.php");
exit;
}
?>
Il ne te reste plus qu' à tester la variable de session 'MEMBRE' dans ta page index.php
Voila en speed, comment j' aurais plustot procédé !!!
Bye...
le 15/02/2005 à 01:52
Bzh
D' ailleur, dangereux d' avoir mis ton code de connexion comme ça ouvertement !!!! Il s' agit tt de même de ta connexion entant qu' admin !!!
Sérieusement à éviter !!!
bof jpeu bien la changer o cas ou, sur lephpfacile c pas des méchants et puis les scripts viennent d'ici, alors tout le monde les coné deja...
Pour les sessions j'ai bien essayé de m'y interesser mais ca me gave (oué jsui un peu longue a trouver les choses bien : pendant plus d'1 an j'ai géré un site de 600 pages en html avant de passer au php
)
Enfin en tout cas j'ai bien essayé tous ce qu'ils disent dans l'article mais ca marche po sur ma requete... Tant mieux :)
Anasha [php-kiche-nomore]
le 15/02/2005 à 02:12
Bzh
Heu !!!! Tout simplement parce que nous ne sommes pas de vrai hacker !!!!
Mais t' inkiètte pas qu' en laissant ton code comme ça, (sans protèger ta requètte) et bin il y rentre sans problème !!!! Les vrai !!!
Et pour les sessions c' est vraiment très simple !!!
Quelques règles toute bête a respecter !!!
Le session_start() avant toute en tête et même le fameu:
<?php
session_start();
//et bin marchera pas a cause des saut de ligne avant le <?php
?>
puis tu enregistre une variable comme ça : $_SESSION['variable'] = "contenue";
et tu récupère la valeur echo $_SESSION['variable'];
ET vérifier que le client accepte le cookie de session (mon gros problème en ce moment
)
Et c' est bon...
ouep mais justement j'ai lu ton post et moi je risque d'envoyer ce site sur free, alors ca me gaverai que ca marche po.
Sinon moi les sessions m'auraient intéressées si j'avais pu leur mettre un time out différent du phpinfo (par defaut 180 = 3 heures). Moi ce que j'aimerai c'est faire comme sur amazon par exemple où après 30 minute y te renvoient sur une page de login avec ton pseudo deja écrit.
Enfin bon c'est pas bien grave tout ca, de toute facon je compprendrai un jour (apres tout le monde mais c po grav !!)
Anasha [php-kiche-nomore]
le 15/02/2005 à 11:15
Bzh
Mais écoute sa y a pas de problème...
Lorsque ta variable de session n' est plus déclaré tu renvoie a ta page de connexion
<?php
if(!isset($_SESSION['MEMBRE'])){header("Location: ./inscription.php");} ?>
Et voila, et pour la duré, il suffit de déclarer une autre variable de session ou tu enregistre l' heure à laquelle tu t' es connecté et ensuite tu la compare a l' heure actuel pour savoir combien de temps elle à été déclarer. Si > ou = alors dé connecté et effacer la session se qui te renverra forcément à ta page de login...
Voila, j' éspère avoir été claire... Très simple et exactement comme tu le souhaitais...
Bye...
le 15/02/2005 à 17:47
Bzh
J' ai potassé un peu ton code pour comprendre pkoi les injection d' SQL ne fonctionne pas....
Et bien tt simplement, tu étais un petit peu protègé vu que tu testes le nombre de résultat or normalement il ne doit avoir qu' un seul résultat alors qu' avec les injections de bases on retourne tous les résultats !!!!
Or, il suffit de rajouter a la fin un "LIMIT 1"...
Donc dangés !!!
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: