URGENT: Securiser pages administration

sjcbboy Messages postés 36 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 15 juillet 2008 - 7 juil. 2008 à 11:07
sjcbboy Messages postés 36 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 15 juillet 2008 - 8 juil. 2008 à 15:38
Bonjour à tous! Je suis en train de faire un site pour une association sportives. J'ai fais des pages admin où ils pourront faire des tas de modifications (de breves, de tarifs, et encore pleins d'autres...). Cependant je souhaiterais securiser ces pages par mot de passe et login. J'ai déjà crée le formulaire d'authentification, mais maintenant je ne sais pas comment je dois faire. Les login et mot de passe doivent ils etre sauvegargé dans la BDD pour etre plus sécurisés? Que dois faire exactement pour securiser toutes les pages admin? Y a t il un script tout simple que je puisse utiliser?
Merci de votre aide car je suis dans l'urgence car je dois mettre le site en ligne d'ici quelques jours. Merci infiniment
P.S: je suis débutant en php

23 réponses

Bling 182 Messages postés 510 Date d'inscription lundi 27 novembre 2006 Statut Membre Dernière intervention 5 juillet 2009 3
7 juil. 2008 à 11:20
Ca date de 2004, mais c'est toujours d'actualité.
http://phpdebutant.org/article47.php
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
7 juil. 2008 à 11:28
Salut,

Le principe c'est que tu as des identifiants enregistés dans une base de donnée et que tu fait une comparaison entre le pseudo et le mot de passe du formulaire et ceux du de la BDD ...

Pour plus de sécurité, tu peus crypter le mot de passe en MD5 dans ta BDD et crypté celui entré dans le formulaire pour la comparaison, cela permet que si un hacker trouve une faille exploitable sur ton site, même si il récupère des mots de passes, il ne poura rien en faire car on ne peus pas décrypter le MD5 !

Dans ton form, utilise la methode post car sinon, si par malheur quelqun fait un copier/collé de l'URL et que la methode utilisé est le methode GET, il prendra le pseudo et le mot de passe avec l'URL (si la personne envoi le liens a plein de personne sans s'en rendre compte, je ne donne pas cher de son compte)

Pour sécuriser toute les page d'administration, tu peus utiliser les session, c'est a dire, qu'a la connection tu créer une session avec le pseudo dedans et dans chaque page tu fais une condition pour vérifier si la session existe, si elle existe on peut afficher la page, sinon on redirige ou tu peus faire autre chose...

Pour avoir un script, il te suffit de chercher sur google, yahoo, phpcs, etc...

a++

Si la réponse vous convient, pensez : Réponse acceptée !
0
sjcbboy Messages postés 36 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 15 juillet 2008
7 juil. 2008 à 11:31
Bonjour Bling 182! Encore toi qui vient à mon aide! Merci! JE voulais savoir déjà est ce plus sûr d'avoir le login et mot de passe dans la BDD ou c'est mieux avec htaccess?
Ensuite d'un point de vue pratique , je dois mettre en include sur chaque page que je veux protéger la page "verif.php"?

Merci de ton aide, je vais essayer le lien que tu m'as envoyé...et je te tiens au courant...Encore merci
0
Bling 182 Messages postés 510 Date d'inscription lundi 27 novembre 2006 Statut Membre Dernière intervention 5 juillet 2009 3
7 juil. 2008 à 11:46
Oui, sur chaque page que tu veux protéger, tu dois inclure la page vérif.php (ou c/c le code)
Les mots de passe, comme a dit nicomilville, c'est mieux de les mettre de facon cryptée dans une bdd, et de vérifier la version cryptée en sortie de formulaire.
en gros if (md5($_POST['pwd'] == $row['pwd'])

Le htaccess c'est une protection au niveau serveur, plus difficilement contournable (ya pas vraiment moyen d'injecter du code, etc) mais bon, ca implique une boite moche qui s'ouvre la premiere fois.
Par contre, tu proteges un dossier facilement comme ca (1 seul fichier)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sjcbboy Messages postés 36 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 15 juillet 2008
7 juil. 2008 à 12:23
Merci Blink et nicomilville pour votre aide. Concernant le mot de passe pour le crypter en MD5 c'est bien dans "fonction" que je sélectionne MD5? Et bien en mettant MD5 dans ma BDD ca me met : "Mauvais login / password. Merci de recommencer" alors que lorsque je mets pas MD5 ca me met vous etes bien logué.

Ensuite je copie bien le code "verif.php" dans la page à sécurisé, mais quand je l'ouvre je tombe sur la page sans me demander le login...
Que puis je faire? Merci
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
7 juil. 2008 à 12:31
en fait dans ta BDD tu as bien enregistrer tes mot de passe crypté ?

après pour la comparaison, as tu bien crypté le mot de passe du formulaire ?

Pour tes pages a sécuriser, utilise les sessions comme je te l'ai iniqué plus haut !

De rien !

a++

Si la réponse vous convient, pensez : Réponse acceptée !
0
sjcbboy Messages postés 36 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 15 juillet 2008
7 juil. 2008 à 12:35
pour crypter le mot de passe de la BDD fallais bien que je choisisse MD5 dans la liste déroulante de "fonction"?
Et comment je dois faire pour crypter le mot de passe dans le formulaire?

Pour ce qui est des pages a sécuriser j'ai copié ce code :

<?

            session_start();

/* 

            si la variable de session login n'existe pas cela siginifie que le 
            visiteur 

            n'a pas de session ouverte, il n'est donc pas logué ni autorisé 
            à

            acceder à l'espace membres

            */
if(!isset($_SESSION['login'])) 
            {

              echo 'Vous n\'êtes 
            pas autoris´ à acceder à cette zone';

              include('login.htm');

              exit;

            }
?>

tiré de : http://phpdebutant.org/article47.php  que m'a conseillé Blink182. Mais ca ne change rien pour moi...
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
7 juil. 2008 à 12:39
ok,

je ne vois pas de quelle liste déroulante tu parle mais sinon ça m'a l'air correct !

a++

PS : as tu une erreur ?

Si la réponse vous convient, pensez : Réponse acceptée !
0
sjcbboy Messages postés 36 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 15 juillet 2008
7 juil. 2008 à 13:02
J'utilise easyPHP et dans phpMYAdmin j'ai crée une table admin avec les champs login et password. quand j'insere ou modifie les données login et pswd j'ai le champ psw de type varchar(8) et on peut choisir fontion (ASCII, CHAR, SOUNDEX, LCASE, UCASE, PASSWORD, OLD_PASSWORD, MD5, SHA1 etc...)

Quand je mets rien ds "fonction" y a pas de problème , mais quand je mets MD5 ca me mets "Mauvais login / password. Merci de recommencer"
Mais je pense que c'est parce que je n'ai pas crypté le formulaire. Comment dois je faire pour le crypter le formulaire?
0
Bling 182 Messages postés 510 Date d'inscription lundi 27 novembre 2006 Statut Membre Dernière intervention 5 juillet 2009 3
7 juil. 2008 à 13:38
md5($_POST['pwd']) ca te donne la somme md5 du champs pwd.

Dans ta base, laisse le champs en char(32).
(Un md5 fait toujours 32 caracteres)
0
JoJo738 Messages postés 1267 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 29 juin 2010 2
7 juil. 2008 à 13:41
Salut,

Oui, il s'agit bien de "MD5" dans la liste déroulante. (a faire uassi lors de l'enregistrement de nouveaux membres)
Mais tu dois EN PLUS faire une comparaison en codant le mot de passe reçu via ton formulaire (comme l'a dit Bling). Par contre il y a une erreur de parenthèse ...

  if( md5($_POST['pdw']) == $row['pdw'])
  {}

Après, md5() n'est plus vraiment une fonction des plus sécurisées ... il existe aussi sha1() et d'autres méthodes (avec des clés)

<hr />Si ma reponse te convient, merci de l'accepter ! 
0
sjcbboy Messages postés 36 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 15 juillet 2008
7 juil. 2008 à 14:05
Merci de votre soutien... a quel endroit dois je mettre

if( md5($_POST['pdw']) == $row['pdw'])

voici la page login.php

<?
// pensez a ouvrir une connexion vers mysql ici
// voir les exercices dans le menu de droite pour cela.

if(isset($_POST) &amp;&amp; !empty($_POST['login'])&amp;&amp; !empty($_POST['pass'])) {

  extract($_POST);

              
// 
            on recupère le password de la table qui correspond au login 
            du visiteur
  $sql = "select pwd from tbl_user where login='".$login."'";
  $req = mysql_query($sql) or die('Erreur 
            SQL !
'.$sql.'
'.mysql_error());

  $data = mysql_fetch_assoc($req);


              if($data['pwd'] != $pass) 
            {

                echo 'Mauvais 
            login / password. Merci de recommencer

';

                include('login.htm'); // 
            On inclut le formulaire d'identification

                exit;

              }

              else {

                session_start();

                $_SESSION['login'] 
            = $login;

                

                echo 'Vous 
            etes bien logué';

                // ici vous pouvez 
            afficher un lien pour renvoyer

                // vers la page d'accueil de votre espace 
            membres 

              }
 
               

            }

else {

              
echo 'Vous 
            avez oublié de remplir un champ.

';

               include('login.htm'); // 
            On inclut le formulaire d'identification

               exit;

}

?>
0
Bling 182 Messages postés 510 Date d'inscription lundi 27 novembre 2006 Statut Membre Dernière intervention 5 juillet 2009 3
7 juil. 2008 à 14:18

if(
$data
[
'pwd'
] != md5(
$pass
))              {






0
JoJo738 Messages postés 1267 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 29 juin 2010 2
7 juil. 2008 à 14:18
^^

<?
// pensez a ouvrir une connexion vers mysql ici
// voir les exercices dans le menu de droite pour cela.

if(isset($_POST['login'], $_POST['pass']) &amp;&amp; !empty($_POST['login'])&amp;&amp; !empty($_POST['pass'])) {
   extract($_POST);
               
//              on recupère le password de la table qui correspond au login              du visiteur
  $sql =  "select pwd from tbl_user where login='". mysql_real 
_escape
_string($login)."'";
  // 
mysql_real
_escape
_string pour proteger ton code

  $req  = mysql_query($sql) or die('Erreur              SQL !
'.$sql.'
'.mysql_error());

  $data =  mysql_fetch_assoc($req);

   //  
$data['pwd'] étant déjà en md5

               if($data['pwd'] ! = md5($pass))              {
                 echo 'Mauvais              login / password. Merci de recommencer

';
                 include('login.htm'); //              On inclut le formulaire d'identification
                 exit;
               }
               else {
                 session_start();
                 $_SESSION['login']              = $login;
                 
                 echo 'Vous              etes bien logué';
                 // ici vous pouvez              afficher un lien pour renvoyer
                 // vers la page d'accueil de votre espace              membres 
               }
                 
             }
 else {
               
echo 'Vous              avez oublié de remplir un champ.

';
                include'login.htm'; //              On inclut le formulaire d'identification
                exit;

}

?>


<hr />Si ma reponse te convient, merci de l'accepter ! 
0
sjcbboy Messages postés 36 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 15 juillet 2008
7 juil. 2008 à 14:21
J'ai remplacé
if($data['pwd'] != $pass)  par 
if( md5($_POST['pwd']) == $row['pwd'])  et j'ai le message d'erreur suivant

Notice: Undefined index: pwd in C:\***\admin\login.php on line 49

Vous etes bien logué

je suis bien logué alors que j'ai un index indéfini
0
sjcbboy Messages postés 36 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 15 juillet 2008
7 juil. 2008 à 14:27
Ah j'ai posté en meme temps que vos réponses. Merci Jojo et bling ca fonctionne. Maintenant j'ai toujours le problème des pages que je veux sécuriser.

Je mets ce code au début de chaque page à securiser:

<?

            session_start();

/* 

            si la variable de session login n'existe pas cela siginifie que le 
            visiteur 

            n'a pas de session ouverte, il n'est donc pas logué ni autorisé 
            à

            acceder à l'espace membres

            */
if(!isset($_SESSION['login'])) 
            {

              echo 'Vous n\'êtes 
            pas autoris´ à acceder à cette zone';

              include('login.htm');

              exit;

            }
?>


et normalement quand je me connecte je tombe sur la premiere page securisé. Ms ce n'est pas le cas. Les pages s'ouvrent mais sans me demander le mot de passe.
0
sjcbboy Messages postés 36 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 15 juillet 2008
7 juil. 2008 à 15:11
HELLLLP PLEAAAAAAASE!!!!
0
Bling 182 Messages postés 510 Date d'inscription lundi 27 novembre 2006 Statut Membre Dernière intervention 5 juillet 2009 3
7 juil. 2008 à 15:18
Ferme ton navigateur, et recharge ;)
0
sjcbboy Messages postés 36 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 15 juillet 2008
7 juil. 2008 à 15:33
J'ai fermé le navigateur et ça n'a rien changé! Je sais plus quoi faire. Sinon je voulais savoir blink 182 sur le lien que tu m'as donné, quand on se connecte(a partir de la page login.html) on arrive a la page login.php où est inscrit "vous êtes bien logué". Comment dois je faire quand je me suis bien identifié pour que j'arrive automatiquement sur ma page d'accueil admin apres quelques secondes?

En tout merci infiniment à tous pour votre aide
0
Bling 182 Messages postés 510 Date d'inscription lundi 27 novembre 2006 Statut Membre Dernière intervention 5 juillet 2009 3
7 juil. 2008 à 15:41
avec un header("Location: ta_page");
0
Rejoignez-nous