IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Protection d'une page


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2009
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 15
    Par défaut Protection d'une page
    Bonjour, pouvez vous me donner votre avis svp, pensez vous que ce script assez simple est une bonne protection pour une page d'accès à une admin ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    <?
    // si la valeur tapée est "toto"
    // on place "ok" dans le cookie
    if(@$_POST["pass"]=="toto") {
       setcookie("passe2","ok");
       Header("Location: ".$_SERVER["PHP_SELF"]);
    // si ce n'est pas le cas, le lien contient ?pass=no
    // on vide le cookie
    } elseif(@$_GET["pass"]=="no") {
       setcookie("passe2");
       Header("Location: ".$_SERVER["PHP_SELF"]);
    }
    // on lit le cookie
    $isOK = (@$_COOKIE["passe2"]!="");
    // si non vide >> affiche le menu
    if($isOK) { ?>
       <center>
       <A href="?pass=no">Déconnecter</A> -
       <A href="ma_page1.php">Page 1</A> -
       <A href="ma_page2.php">Page 2</A> -
       <A href="ma_page3.php">Page 3</A>
       </center><hr>
    <? // si vide >> affiche le formulaire
    } else { ?>
       <form method="post">
          <table><tr>
             <td><input type="password" name="pass"></td>
             <td><input type="Submit" value="Entrer"></td>
          </tr></table>
       </form>
    <? } ?>
    Avec un <? include("protection_de_ma_page.php");
    if($isOK) sur les pages concernée ça fonctionne bien...
    Mais à part y ajouter un pseudo en plus ...?
    "require" à la place d' "include" ne serait-il pas mieux adapté ?
    Je n'ai pas ajouté de valeur de durée du cookies, pensez vous qu'il faut le faire ?
    Bref, ce script protège vraiment ma page à votre avis ?
    De 1 à 10, comment noteriez vous en matière de protection ?
    Merci par avance...

  2. #2
    Membre chevronné
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2006
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 645
    Par défaut
    A partir du moment où ton formulaire est transmis en HTTP, n'importe qui (ou presque) peut intercepter le mot de passe qui circule en clair.

    Donc à moins d'avoir un contexte particulier que tu ne nous as pas exposé, je note à 1/10 la sécurité de ta solution.

  3. #3
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    Avant même de lire le code, je dirais qu'il y a beaucoup trop de @ pour prétendre faire de la sécurité. Une page sûre gère ses erreurs, elle ne les ignore pas.

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Pour avoir 10/10 il faut gérer les essais succssifs erronés.

    Je ne suis pas un pro des cookies mais si quelqu'un crée un cookie "passe2" a la main, il accederait a la page ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre averti
    Inscrit en
    Février 2009
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 15
    Par défaut
    Ok, merci pour vos remarques...Effectivement, je vais enlever les @ (sale manie) et sinon, je ne cherche pas à avoir 10/10, loin de là, mais pour ta remarque sur les cookies, je vais effectivement voir ce prob...Je re-présenterais le script ici quand j'aurais corrigé certains défauts que vous avez identifiés...N'hésitez pas, c'est en trébuchant qu'on apprend ...
    alband85, je suis en train d'essayer de mettre me mdp dans un fichier txt exterrieur pour qu'il ne figure plus en clair dans le script d'envoi...Enfin, j'essai...

  6. #6
    Membre averti
    Inscrit en
    Février 2009
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 15
    Par défaut
    Bon, j'avais pensé à un autre scipt (peut être y a t-il des fautes et des répétitions, n'hésitez pas à me le dire !)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    <html>
    <!--sécu_2-->
    <br/>
    <?php
    define('FICHIER', 'MDP_0.html');
     
    if (!isset($_POST['valider'])) {
    ?>
    <b><font color="#336633">Tappez en toutes lettres votre mot de pass :</font></b><br/>	
    <form method="POST">
        Entrez ici votre mot de pass : <input type="text" name="mot" value=""/><br/>
        <input type="submit" value="valider" name="valider"/>
    </form>
     
    <?php
    } else {
        $resultats =array();
         $fp = fopen(FICHIER, 'r') or die('Ouverture en lecture de "' . FICHIER . '" impossible !');
        while (!feof($fp)) {
            $ligne = fgets($fp, '15');
            if (preg_match('|\b' . preg_quote($_POST['mot']) . '\b|i', $ligne)) {
                $resultats[] = $ligne;
            }
        }
        fclose($fp);
        $nb = count($resultats);
        if ($nb > 0) {
    		echo "<li> <font color=('000099'> <u><b>BRAVO, mot de pass corrects ! => </b></u></font> <a form0.php'><br/>
    		>>> Accédez à votre page d'administration en cliquant ICI !!! <<<</a><br/>
    		<br/><i>Merci de nous faire confiance !<br/>
    		<br/></i></li>";
            echo "'$mot' trouvé $nb  :";
            echo '<ul>'; 
            foreach ($resultats as $v) {
                echo "<li>$v</li>";
            }
            echo '</ul>';
        } else {
            echo("<br/><font color='#336633'>Vous ne pouvez pas administrer cette page, votre pass n'est pas correct, <b>
    	<br/>
    		>>> ...Vous vous êtes trompé ??? <a href='pass.php'>RETOUR</a></i><br/>");
        }
    }
    ?>
     
    </html>
    Est ce qu'il serait mieux que je travail sur ce projet là ?
    Est il plus fiable à vos yeux ?
    Le script va vérifier si le mot de passe du fichier MDP_0.php existe sur une ligne et donne le lien vers la page si celui-ci est exact...
    le prob, c'est pour ça que j'ai interrompu ce script, c'est que le form0.php administrant la page sécurisée se trouve sur le serveur, donc rien de plus facile que de tapper l'adresse du form0.php hp et d'écrire dedans...Cette sécurité ne sert donc absolument à rien...A moins d'héberger les form d'admin (form0.php par exemple) sur un serveur distant, quelle galère...Pas pratique et ça fait pas très propore, non ?
    En plus, là, je n'ai pas réussi à intégrer un cookie, donc il faut se ré-identif à chaque envoi de formulaire...
    Qu'en pensez vous ???
    Je galèèère !
    Help me please !!!

  7. #7
    Membre chevronné
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2006
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 645
    Par défaut
    Citation Envoyé par Taga1 Voir le message
    alband85, je suis en train d'essayer de mettre me mdp dans un fichier txt exterrieur pour qu'il ne figure plus en clair dans le script d'envoi...Enfin, j'essai...
    Non, ce n'est pas là le problème.
    Si le mot de passe est dans le script PHP, il est "caché".
    Par contre, quand tu valides ton formulaire, les données sont transmises en clair. Quelqu'un qui intercepte le trafic peut lire le login et le mot de passe... et c'est beaucoup plus simple qu'il n'y paraît.

    Pour protéger ça, tu as plusieurs solutions (plus ou moins fiables) :

    • chiffrer le mot de passe avant l'envoi ;
    • chiffrer la connexion (HTTPS à la place du HTTP) ;
    • envoyer le hash du mot de passe (moins sécu) ;
    • ...

    Tout dépend du niveau de sécurité que tu recherches... sachant que la grande majorité des sites ne se posent pas la question : le mot de passe est transmis comme tu le fais (je ne dis pas que c'est bien...).

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Protection d'une page permettant l'accès à une base de données sql
    Par tribalnanasss dans le forum Langages serveur
    Réponses: 1
    Dernier message: 21/08/2010, 09h37
  2. protection d'une page web avec mot de passe
    Par chimene dans le forum ASP.NET
    Réponses: 3
    Dernier message: 09/11/2008, 13h48
  3. protection sur une page
    Par chicho dans le forum Sécurité
    Réponses: 1
    Dernier message: 28/09/2007, 08h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo