par
skystef » 30 mai 2006, 15:48
Bonjour, j'ai un petit problème qui provoque une énorme faille de sécurité dans le site que je suis en train de réaliser.
J'ai crée une interface d'administration, j'ai donc une page qui demande un login + mot de passe et quand on valide on se retourve sur un script php pour vérifier si les données sont correctes.
Je crée en fait un cookie et si le mot de passe ou le login sont faux je le détruit. Sans ce cookie, mon interface d'administration affichera Accès Interdit sinon elle affiche ce qu'elle doit afficher...
Voici le code du script de vérification :
Code : Tout sélectionner
<? setcookie('admin','toto',time()+3600*24*365);?>
<?php
include('include/base.php');
/*Varialbes sur les informations du client*/
if(isset($_POST['login']) && isset($_POST['password']) && !empty($_POST['login']) && !empty($_POST['password'])){
$login=$_POST['login'];
$pass=$_POST['password'];
/**********************************************/
$resultat=mysql_query("select * from admin where login='".$login."' and password='".$pass."'");
$nbresult=mysql_num_rows($resultat);
if($nbresult==0){
setcookie('admin','toto',0);
echo ("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
echo("<html xmlns=\"http://www.w3.org/1999/xhtml\">");
echo("<head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\" />");
echo ("<html><body>");
echo "connexion refusée, <a href=\"http://skystef.infoliens.com/test/\">Cliquez-ici</a>";
print"</body></html>";
}
else{
echo ("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
echo("<html xmlns=\"http://www.w3.org/1999/xhtml\">");
echo("<head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\" />");
echo ("<html><body>");
echo ("<br/><br/><br/><br/><br/><br/><br/><br/><br/>");
echo ("<center><h3><img src=\"images/validation.png\" width=\"96\" height=\"96\">Connexion réussie. <a href=\"http://skyst3f.infoliens.com/n/access.php\">Cliquez-ici</a> pour continuer.</h3>
</center></body></html>");
}
}
?>
Le code n'est pas trè beau je le reconnait. Si le login + pass son ok, je clique sur le lien cliquez ici et je vais sur ma page d'administration qui avant d'afficher quelque chose vérifie la présence du cookie.
Mais là avec mon script j'ai ce message d'erreur quand le login ou le mot de passe (ou les deux ) sont faux :
Warning: Cannot modify header information - headers already sent by (output started at /home/skystef/www/ntemp/confirm.php:6) in /home/skystef/www/ntemp/confirm.php on line 27
connexion refusée,
Mais le cookie existe toujours, je peux donc acceder à mon interface d'administration sans problème!
Pouquoi ais-je ce message, je n'affiche pourtant aucunne données avant de détruire le cookie...
Bonjour, j'ai un petit problème qui provoque une énorme faille de sécurité dans le site que je suis en train de réaliser.
J'ai crée une interface d'administration, j'ai donc une page qui demande un login + mot de passe et quand on valide on se retourve sur un script php pour vérifier si les données sont correctes.
Je crée en fait un cookie et si le mot de passe ou le login sont faux je le détruit. Sans ce cookie, mon interface d'administration affichera Accès Interdit sinon elle affiche ce qu'elle doit afficher...
Voici le code du script de vérification :
[code]
<? setcookie('admin','toto',time()+3600*24*365);?>
<?php
include('include/base.php');
/*Varialbes sur les informations du client*/
if(isset($_POST['login']) && isset($_POST['password']) && !empty($_POST['login']) && !empty($_POST['password'])){
$login=$_POST['login'];
$pass=$_POST['password'];
/**********************************************/
$resultat=mysql_query("select * from admin where login='".$login."' and password='".$pass."'");
$nbresult=mysql_num_rows($resultat);
if($nbresult==0){
setcookie('admin','toto',0);
echo ("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
echo("<html xmlns=\"http://www.w3.org/1999/xhtml\">");
echo("<head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\" />");
echo ("<html><body>");
echo "connexion refusée, <a href=\"http://skystef.infoliens.com/test/\">Cliquez-ici</a>";
print"</body></html>";
}
else{
echo ("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
echo("<html xmlns=\"http://www.w3.org/1999/xhtml\">");
echo("<head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\" />");
echo ("<html><body>");
echo ("<br/><br/><br/><br/><br/><br/><br/><br/><br/>");
echo ("<center><h3><img src=\"images/validation.png\" width=\"96\" height=\"96\">Connexion réussie. <a href=\"http://skyst3f.infoliens.com/n/access.php\">Cliquez-ici</a> pour continuer.</h3>
</center></body></html>");
}
}
?>
[/code]
Le code n'est pas trè beau je le reconnait. Si le login + pass son ok, je clique sur le lien cliquez ici et je vais sur ma page d'administration qui avant d'afficher quelque chose vérifie la présence du cookie.
Mais là avec mon script j'ai ce message d'erreur quand le login ou le mot de passe (ou les deux ) sont faux :
[quote]Warning: Cannot modify header information - headers already sent by (output started at /home/skystef/www/ntemp/confirm.php:6) in /home/skystef/www/ntemp/confirm.php on line 27
connexion refusée,[/quote]
Mais le cookie existe toujours, je peux donc acceder à mon interface d'administration sans problème!
Pouquoi ais-je ce message, je n'affiche pourtant aucunne données avant de détruire le cookie...