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 :

Empêcher l'ouverture d'une page web


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 115
    Points : 62
    Points
    62
    Par défaut Empêcher l'ouverture d'une page web
    Bonjour,
    Je suis en train de développer un site web et j'ai une question qui m'embête.
    J'ai une page php et je ne veux pas que la page puisse être ouverte autrement que par mon code. Je voudrais faire une redirection dans le cas où l'utilisateur entrerait directement l'url de la page dans la barre d'adresse du navigateur.
    C'est possible ça ?? Si oui, comment ?
    Merci d'avance !

  2. #2
    Membre régulier
    Homme Profil pro
    Sécurité
    Inscrit en
    Février 2011
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2011
    Messages : 53
    Points : 106
    Points
    106
    Par défaut
    Bonjour,


    Une solution pourrait consister à faire quelque chose de la sorte (dans l'idée):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (!$pagePrecedente == $tellePage)
         header ('Location: /');
    Comme ca tu vérifies d'où arrive l'internaute. Si ce n'est pas d'une page autoriser il est redirigé vers où tu veux.

    Reste à trouver comment exprimer en PHP $pagePrecedente. Et je crois que c'est quelque chose comme $_SERVER["HTTP_REFERER"]. A vérifier...

    Et donc finalement, comment traduire $tellePage en PHP. Si vous ne pouvez y accéder que depuis une page c'est direct. En revanche s'il est possible d'y accéder depuis plusieurs, peut-être un tableau ou quelque chose d'autre.

    En espérant vous avoir mis sur une piste.


    Cordialement,

    Graimbault

  3. #3
    Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 115
    Points : 62
    Points
    62
    Par défaut
    Merci pour cette idée !
    Ca pourrait être une bonne solution... Faudrait que j'essaye.
    Mais comme la page concernée doit s'ouvrir dans un popup...
    Il faudrait peut être que je regarde du côté du javascript pour identifier le window.opener du popup.
    Merci pour la piste en tout cas !

  4. #4
    Membre actif Avatar de elcoyotos
    Homme Profil pro
    Amateur passionné
    Inscrit en
    Octobre 2006
    Messages
    490
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Amateur passionné

    Informations forums :
    Inscription : Octobre 2006
    Messages : 490
    Points : 294
    Points
    294
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <?php
    $path_parts = pathinfo($_SERVER['HTTP_REFERER']);
    if ($path_parts['dirname'] == "http://www.monsite-com/un_repertoire/un_autre_rep"  ) {
    ?>
    Avec ce code, tu vérifie que le referer provient bien de ton site ...
    Surtout pas de vérification en JS !!! Trop facile à contourner ...
    Écoute, sinon ta langue te perdra (proverbe Navajo)

  5. #5
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par elcoyotos Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <?php
    $path_parts = pathinfo($_SERVER['HTTP_REFERER']);
    if ($path_parts['dirname'] == "http://www.monsite-com/un_repertoire/un_autre_rep"  ) {
    ?>
    Avec ce code, tu vérifie que le referer provient bien de ton site ...
    Surtout pas de vérification en JS !!! Trop facile à contourner ...
    changer le référer c'est aussi facile, et surtout ça ne marche pas si le navigateur n'envoie pas le referer

  6. #6
    Membre actif Avatar de elcoyotos
    Homme Profil pro
    Amateur passionné
    Inscrit en
    Octobre 2006
    Messages
    490
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Amateur passionné

    Informations forums :
    Inscription : Octobre 2006
    Messages : 490
    Points : 294
    Points
    294
    Par défaut
    changer le référer c'est aussi facile
    Comment fais tu ?
    et surtout ça ne marche pas si le navigateur n'envoie pas le referer
    Un exemple concret ?
    Écoute, sinon ta langue te perdra (proverbe Navajo)

  7. #7
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par elcoyotos Voir le message
    Comment fais tu ?
    Un exemple concret ?
    un petit about:config dans Firefox et tu peux changer tout ce que tu veux, sinon en PHP c'est simple de créer une vrai requête HTTP

  8. #8
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 386
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    Moi, je pense à une autre solution, basée sur les sessions PHP : dans la page appelante, tu positionnes au préalable une session, puis dans la page appelée, tu testes cette session ; je pense que ce n'est pas contournable.
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  9. #9
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Sancha Voir le message
    je ne veux pas que la page puisse être ouverte autrement que par mon code.
    Bonsoir,
    1/ quel est ce code ?
    -> un lien <a ...></a> ?
    -> un formulaire <form ...></form>?
    -> autre ??
    2/ Dans une seule ou plusieurs page ?

    Perso, j'utilise un système similaire à celui indiqué par LaurentSc :
    A/ dans le fichier où se trouve le lien :
    - création d'une SESSION, contenant un nombre/chaine aléatoire (donc : qui change à chaque fois).
    - si <form> : un champ input hidden, avec en value la valeur de la SESSION
    - si <a> : la valeur de la SESSION est passée en paramètre dans l'URL

    B/ dans le fichier de réception :
    - on vérifie que la SESSION = valeur reçue (en GET ou POST, selon le cas)
    - on vide la SESSION

  10. #10
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 386
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    C'est même plus "chiadé" que ce que j'imaginais ; en fait, si l'utilisateur rentre directement l'URL dans la barre d'adresse du navigateur, peu de chance que la session existe...donc je ne suis pas sûr qu'il soit nécessaire de générer une valeur aléatoire et de la transmettre (par champ hidden ou par l'URL).
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  11. #11
    Invité
    Invité(e)
    Par défaut
    C'est la VALEUR de la SESSION qui est comparée au POST ou GET.
    Ce n'est pas juste un test d'existence de la SESSION.

    Le système que j'ai décrit permet aussi d'éviter de refaire le traitement d'un formulaire si on "actualise" (F5) la page :
    car après le 1er traitement la SESSION est vidée, et donc est différente de la valeur du POST ou GET.

    On évite donc :
    - d'envoyer plusieurs fois le même email,
    - de créer plusieurs INSERT en Bdd de la même ligne,
    - ou plusieurs DELETE de la même ligne,
    -...

  12. #12
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 386
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    T'as parfaitement raison ; OK.
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  13. #13
    Membre actif Avatar de elcoyotos
    Homme Profil pro
    Amateur passionné
    Inscrit en
    Octobre 2006
    Messages
    490
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Amateur passionné

    Informations forums :
    Inscription : Octobre 2006
    Messages : 490
    Points : 294
    Points
    294
    Par défaut
    un petit about:config dans Firefox et tu peux changer tout ce que tu veux
    Peux tu me donner un exemple concret STP ? Cela m'intéresse ...
    en PHP c'est simple de créer une vrai requête HTTP
    Bien sur mais de chez moi, comment pourrai je faire croire à http://www.developpez.net (par exemple) que le referer provient bien de votre site ????
    Donne moi un exemple STP ...
    Écoute, sinon ta langue te perdra (proverbe Navajo)

  14. #14
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par elcoyotos Voir le message
    Peux tu me donner un exemple concret STP ? Cela m'intéresse ...

    Bien sur mais de chez moi, comment pourrai je faire croire à http://www.developpez.net (par exemple) que le referer provient bien de votre site ????
    Donne moi un exemple STP ...
    ...

    Tu prends l'extension Modify Header

    En paramètres :

    Modify Action,
    Header name : Referer
    Header value: hello
    Save

    Tu réactualises la page et voila,
    c'est une donnée coté client, donc modifiable

  15. #15
    Membre actif Avatar de elcoyotos
    Homme Profil pro
    Amateur passionné
    Inscrit en
    Octobre 2006
    Messages
    490
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Amateur passionné

    Informations forums :
    Inscription : Octobre 2006
    Messages : 490
    Points : 294
    Points
    294
    Par défaut
    Merci pour ton exemple.
    c'est une donnée coté client, donc modifiabe
    C'est juste ...
    Effectivement, avec Modify Header ....
    Peux tu me montrer un exemple de ce qu'on peut faire avec about:config ?
    Écoute, sinon ta langue te perdra (proverbe Navajo)

  16. #16
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par elcoyotos Voir le message
    Merci pour ton exemple.
    C'est juste ...
    Effectivement, avec Modify Header ....
    Peux tu me montrer un exemple de ce qu'on peut faire avec about:config ?
    tu mets le network.http.sendRefererHeader a 0, et ça n'envoie plus le referer

  17. #17
    Membre actif Avatar de elcoyotos
    Homme Profil pro
    Amateur passionné
    Inscrit en
    Octobre 2006
    Messages
    490
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Amateur passionné

    Informations forums :
    Inscription : Octobre 2006
    Messages : 490
    Points : 294
    Points
    294
    Par défaut
    Merci pour l'exemple. Dans ce cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $_SERVER['HTTP_REFERER'] = ""
    C'est bien ça ?

    Avec mon histoire de vérification du REFERER, si on ajoute la technique du grain de sel, cela pourrai être fiable non ?
    Écoute, sinon ta langue te perdra (proverbe Navajo)

  18. #18
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par elcoyotos Voir le message
    Merci pour l'exemple. Dans ce cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $_SERVER['HTTP_REFERER'] = ""
    C'est bien ça ?

    Avec mon histoire de vérification du REFERER, si on ajoute la technique du grain de sel, cela pourrai être fiable non ?
    même pas la variable $_SERVER['HTTP_REFERER'] n'existera pas,
    le meilleur moyen étant d'utiliser les sessions (et encore ça se simule aussi)

  19. #19
    Membre actif Avatar de elcoyotos
    Homme Profil pro
    Amateur passionné
    Inscrit en
    Octobre 2006
    Messages
    490
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Amateur passionné

    Informations forums :
    Inscription : Octobre 2006
    Messages : 490
    Points : 294
    Points
    294
    Par défaut
    Bon, ok.
    Mais si on vérifie que le referer existe et qu'on ajoute une chaine aléatoire ?
    Genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <?php
    $path_parts = pathinfo($_SERVER['HTTP_REFERER']);
    $chaine_aleatoire = "sfg4554";
     
    if ( isset($_SERVER['HTTP_REFERER']) and $path_parts['dirname'].$chaine_aleatoire == "http://www.monsite.com/un_repertoire".$chaine_aleatoire) {
    ?>
    Là ça commence à le faire non ?
    Écoute, sinon ta langue te perdra (proverbe Navajo)

  20. #20
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    faut bien vérifier cette chaine

Discussions similaires

  1. Ouverture d'une page web
    Par cyscek dans le forum JSF
    Réponses: 2
    Dernier message: 22/08/2011, 16h49
  2. ouverture d'une page web en langage c
    Par touirik dans le forum C
    Réponses: 3
    Dernier message: 03/06/2011, 17h31
  3. bizarre a l'ouverture d'une page web
    Par kalliste2b dans le forum Windows Vista
    Réponses: 3
    Dernier message: 08/11/2008, 21h27
  4. probleme d'ouverture d'une page web dans un stream
    Par fraisa1985 dans le forum Entrée/Sortie
    Réponses: 9
    Dernier message: 26/02/2008, 17h03

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