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 :

Page dans IFrame avec protection du domaine


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2006
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 42
    Points : 24
    Points
    24
    Par défaut Page dans IFrame avec protection du domaine
    Bonjour,

    Pour des raisons pratiques je souhaiterais mettre une page dans un cadre IFrame et pouvoir protéger cette page contre les reprises sur d'autres sites.

    J'ai trouvé un script en PHP qui fonctionne très bien avec tous les navigateurs sauf malheureusement Internet Explorer :

    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
    <?php
     
      define('MSG_NO_ACCESS', 'No access');
     
      $acceptedDomains = array('mydomain.com', 'a.com', 'b.com');
      $referer=get_domain($_SERVER['HTTP_REFERER']);
     
      if(!$referer || !in_array($referer,$acceptedDomains))
      {
         header('HTTP/1.0 403 Forbidden');
         exit(MSG_NO_ACCESS);
      }
     
    function get_domain($url)
    {
      $pieces = parse_url($url);
      $domain = isset($pieces['host']) ? $pieces['host'] : '';
      if (preg_match('/(?P<domain>[a-z0-9][a-z0-9\-]{1,63}\.[a-z\.]{2,6})$/i', $domain, $regs)) 
      {
         return $regs['domain'];
      }
      return false;
    }
    ?>
    L'idée que j'ai eu, vous l'aurez compris, c'est que cette page ne s'ouvre qu'avec mon nom de domaine en référent.

    Si vous avez d'autres idées je suis preneur

    Je vous remercie par avance de votre aide.

  2. #2
    Membre chevronné

    Homme Profil pro
    Ingénieur Hospitalier
    Inscrit en
    Juillet 2004
    Messages
    993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Hospitalier
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 993
    Points : 1 768
    Points
    1 768
    Billets dans le blog
    1
    Par défaut
    Je te conseil de voir du côté PHP les techniques CORS et de paramétrer ton propre nom de domaine.

    En ce qui concerne le cross domain (ton IFRAME chez des publishers).
    Access-Control-Allow-Origin: http://www.domain_de_iframe.com
    Activation des headers côté Apache :
    http://www.w3.org/wiki/CORS_Enabled#

    Controlleur PHP :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?php
    //Au tout début
     header("Access-Control-Allow-Origin: http://www.domain_de_iframe.com");
    Pour setter ton domain une méthode :
    http://dinochiesa.net/?p=754#

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2006
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 42
    Points : 24
    Points
    24
    Par défaut
    Merci pour ton aide, apparemment plusieurs possibilités avec avec de nombreux langages.

    Malheureusement, mon faible niveau de connaissance ne me permet pas de tout comprendre, j'ai mis sur ma page certain des codes proposés mais en vain, peux tu m'aiguiller ?

    Merci

  4. #4
    Membre chevronné

    Homme Profil pro
    Ingénieur Hospitalier
    Inscrit en
    Juillet 2004
    Messages
    993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Hospitalier
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 993
    Points : 1 768
    Points
    1 768
    Billets dans le blog
    1
    Par défaut
    Pour cette technique il faut :

    1) Etre adminstrateur du serveur Apache
    2) Activé le mod_header (header_module) de Apache

    - En SSH ou via un terminal
    a2enmod headers
    - A la mano

    Editer le fichier httpd.conf de apache : décommanté (supprimé le #)

    #LoadModule headers_module modules/mod_headers.so
    3) redémarrer apache
    4) script PHP CORS
    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
     
    //Au tout début
    //ici on sette les method POST GET OPTIONS (PUT DELETE ... )
    $allowedOrigin = "http://www.domain_de_iframe.com";
     header("Access-Control-Allow-Origin: " . $allowedOrigin);
    // respond to preflights
    if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
      // return only the headers and not the content
      // only allow CORS if we're doing a GET - i.e. no saving for now.
      if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD']) &&
          $_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD'] == 'GET' &&
          isset($_SERVER['HTTP_ORIGIN']) &&
          is_approved($_SERVER['HTTP_ORIGIN'])) {
        $allowedOrigin = $_SERVER['HTTP_ORIGIN'];
        $allowedHeaders = get_allowed_headers($allowedOrigin);
        header('Access-Control-Allow-Methods: GET, POST, OPTIONS'); //...
        header('Access-Control-Allow-Origin: ' . $allowedOrigin);
        header('Access-Control-Allow-Headers: ' . $allowedHeaders);
        header('Access-Control-Max-Age: 3600');
     
        //SI ok Ton traitement
      }
      exit;
    }
    //
    Voilà a peux près ce que tu dois faire a quelque chose près .
    J'ai pas testé ce code, mais il devrait marché a voir...

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2006
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 42
    Points : 24
    Points
    24
    Par défaut
    Un grand merci pour ton aide, reste plus qu'à apprendre le fonctionnement d'un serveur Apache. Car la je suis un peu largué

    Grâce à toi j'ai au moins la solution.


  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2006
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 42
    Points : 24
    Points
    24
    Par défaut
    Je me disais une chose en faisant quelques recherches, es-ce possible de sécuriser une page par un jeton de sécurité (Token).

    Je m'explique :

    Mes visiteurs cliques sur un lien, ce lien en php génère une chaine, la page sécurisé s'ouvre.

    Mais si cette page n'est pas ouverte par le lien (chaine de sécurité), cette page est redirigé ou un message d'erreur s'affiche.

    Merci.

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

Discussions similaires

  1. Récupérer l'information TITLE d'une page dans un Iframe (même domaine)
    Par edward carnby dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 18/01/2012, 13h04
  2. Remontée de page dans iframe enfant
    Par jprscl dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 18/09/2011, 16h02
  3. Charger une page dans <iframe> discrètement
    Par Bilbax dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 11/05/2008, 16h25
  4. Actualisaton automatique page dans iframe
    Par nicaud dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 04/03/2007, 16h13
  5. [ifrmaes]Charger une page dans une iframe
    Par Destampy dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 25/05/2005, 15h54

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