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 :

Interdire l'acces a une page en dehors de l'utilisation du form Authentification/Redirection


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club Avatar de carlito
    Inscrit en
    Décembre 2003
    Messages
    87
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 87
    Points : 37
    Points
    37
    Par défaut Interdire l'acces a une page en dehors de l'utilisation du form Authentification/Redirection
    Bonjour,

    J'ai eu beau chercher sur le forum, je n'ai pas trouvé de réponse a mon pb.

    J'utilise un script php qui me permet de renvoyer un utilisateur sur sa page privée apres s'etre authentifier via un formulaire.
    Mon souci est que cette page peut tres bien être lancer directement si on connait son URL.
    J'ai essayé de mettre un .htaccess dans le répertoire des pages, mais du coup apres l'authentification, l'utilisateur ne peut accéder a la page...

    Comment puis je faire pour que cette page privée ne soit accessible uniquement que apres l'authentification/redirection?

    Merci pour votre aide!

  2. #2
    Membre actif
    Homme Profil pro
    DSI interne
    Inscrit en
    Juin 2011
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : DSI interne
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2011
    Messages : 197
    Points : 290
    Points
    290
    Par défaut
    Bonjour,

    Tout tes scripts PHP seront toujours accessible si on connait l'URL ^^.

    Pourquoi ne pas déjà mettre en place des sécurité sur ta page, vérification de l'envoie des variables en POST, et tout simplement si l'authentification se fait pas, la page renvoie une erreur ou une 404 ?
    "Beatus qui prodest quibus potest"

  3. #3
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Hello

    Toutes tes pages privées/personnelles devraient être équipées du snippet suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
    require "auth.php"; // implémente les fonctions "is_logged" et "validate_rights"
     
    // si l'utilisateur n'est pas loggué ou s'il ne dois pas avoir accès à ce script
    if (!is_logged() || !validate_rights(__FILE__)) {
        header("HTTP/1.1 403 Forbidden");  // header "interdit"
        header("Refresh:5;url=login.php"); // redirection vers "login.php" dans 5 secondes
        include "forbidden.html";          // affichage de la vue "intedit, vous allez être redirigé bla bla bla..."
        die();
    }
     
    // suite du script ...

  4. #4
    Nouveau membre du Club Avatar de carlito
    Inscrit en
    Décembre 2003
    Messages
    87
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 87
    Points : 37
    Points
    37
    Par défaut
    Bonjour,

    Merci pour vos réponses.

    Je comprends que je dois effectivement sécuriser mes pages.

    J'ai en fait 2 soucis:
    1) Comment faire pour implémenter mes 2 variables "is_logged" et "validate_rights" dans ma page d'authentification: login.php dont voici le code:
    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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    <?php
    require_once("protec/passe/conf.php");
    Error_Reporting(1);
    @set_magic_quotes_runtime(0);
     
     
    $db_link=connect_db();
     
     
    //$pseudo = Get_GPC_addslashes($_POST['pseudo']);
    //$passe = Get_GPC_addslashes($_POST['passe']);
    if(eregi("#", $_POST['pseudo']) || eregi("#", $_POST['passe'])){ echo "<br><br><br><center>Les caractères spéciaux ne sont pas authorisés. Merci<br><br><a href=\"javascript:history.back(1)\">Retour</a>";exit; }
     
     
    $query_requete = "select * from membre where pseudo=\"".Get_GPC_addslashes($_POST[pseudo])."\" and passe=\"".Get_GPC_addslashes($_POST[passe])."\"";
    $requete = mysql_query($query_requete, $db_link) or die(mysql_error()."probleme");
    $row = mysql_fetch_assoc($requete);
    $totalRows = mysql_num_rows($requete);
     
     
    if(mysql_num_rows($requete)==0)
            {
     
    		header("Location:$url_erreur");exit;
            }
    else
    {
     
    // test si compte actif
    if($row["actif"]!=1){ echo "<center><br><br>STOP ! votre compte a besoin d'être validé avant que vous puissiez accéder à votre espace membre<br><br><a href=\"javascript:history.back(1)\">Retour</a></center>";exit; }
     
     
    if(isset($_POST["modif_infos"]) && $_POST["modif_infos"]=="1"){ $destination="protec/modif_infos_util.php"; }else{ $destination=$row[destination]; }
     
            $taille = 40;
            $lettres = "abcdefghijklmnopqrstuvwxyz0123456789";
            srand((double)microtime()*1000000);
            for ($i=0;$i<$taille;$i++)
                    {
                    $lid.=substr($lettres,(rand()%(strlen($lettres))),1);
                    }
     
            $requete=mysql_db_query($sql_bdd,"update membre set id=\"$lid\", heure_session= NOW() where pseudo=\"".Get_GPC_addslashes($_POST[pseudo])."\" and passe=\"".Get_GPC_addslashes($_POST[passe])."\"",$db_link);
             $expirer = 24*3600;
    setcookie( "monpseudo", $_POST['pseudo'], time() + $expirer, "/" );
    setcookie( "monpays", $row['pays'] , time() + $expirer, "/" );
    setcookie( "monemail", $row['email'] , time() + $expirer, "/" );
     
    // SESSIONS
     
    if($row["droits"]==1 || $_POST["modif_infos"]==1)
    {
    	if($active_session=="1")
    		{		
    			session_start(); 
    			$_SESSION["id"] = $lid;
    			header("Location: $destination");
    		} 
    		else  
    		{
    		header("Location: $destination?id=$lid");
    		}
    }
    else
    {
    	if($active_session=="1")
    		{		
    			session_start(); 
    			$_SESSION["id"] = $lid;
    			header("Location: $repertoire_protege/$destination");
    		} 
    		else  
    		{
    		header("Location: $repertoire_protege/$destination?id=$lid");
    		}
    }
    }
     
    close();
    ?>

    2) Dans la page privée/personnelle j'ai rajouté le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
    require "auth.php"; // implémente les fonctions "is_logged" et "validate_rights"
     
    // si l'utilisateur n'est pas loggué ou s'il ne dois pas avoir accès à ce script
    if (!is_logged() || !validate_rights(__FILE__)) {
        header("HTTP/1.1 403 Forbidden");  // header "interdit"
        header("Refresh:5;url=login.php"); // redirection vers "login.php" dans 5 secondes
        include "forbidden.html";          // affichage de la vue "intedit, vous allez être redirigé bla bla bla..."
        die();
    }

    Que dois je mettre en place de (__FILE__) dans le code ci-dessus?

    Merci encore pour votre aide!

  5. #5
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    __FILE__ est une constante magique

  6. #6
    Nouveau membre du Club Avatar de carlito
    Inscrit en
    Décembre 2003
    Messages
    87
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 87
    Points : 37
    Points
    37
    Par défaut
    Bonjour,

    merci pour l'info, et je comprend a présent ce que signifie "__FILE__ ".

    J'ai juste besoin que vous m'aidiez a implémenter correctement mes 2 fonction "is_logged" et "validate_rights" dans ma page d'authentification: login.php.

    Merci encore pour votre aide! :-)

  7. #7
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    le rôle de is_logged est de renvoyer true si l'utilisateur est connecté, false sinon.
    le rôle de validate_rights est de déterminer si l'utilisateur connecté à le droit d'utiliser la ressource passée en paramètres (en l’occurrence, notre script). Si tu n'as pas de gestion de droits par ressource, tu peux supprimer cet appel.

Discussions similaires

  1. [PHP 5.2] Interdire accès direct à une page
    Par AbouZaid dans le forum Langage
    Réponses: 12
    Dernier message: 03/05/2012, 16h28
  2. [PHP-JS] interdire l'accès direct à une page php
    Par clem037 dans le forum Langage
    Réponses: 10
    Dernier message: 17/03/2008, 22h04
  3. [servlet] Interdire l'accès d'une servlet via l'url
    Par Bicnic dans le forum Struts 1
    Réponses: 2
    Dernier message: 14/02/2006, 10h53
  4. Accés a une page HTTPS
    Par vins25 dans le forum Apache
    Réponses: 4
    Dernier message: 02/02/2006, 13h19
  5. Réponses: 5
    Dernier message: 09/01/2006, 11h46

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