locked
Faille de sécurité Internet Explorer 7 ? RRS feed

  • Question

  • Salut tt le monde,

     

    J'utilise IFRAME dans le but de lui envoyer des POST en provenance de formulaires pour faire de l'activescripting sans utiliser Ajax et etre trop dépendant de javascript.

     

    Je me suis appercu que sous internet explorer 7 (Edit: même 100% updaté) mon site http://www.serveurperso.com force IE7 à continuer d'envoyer des requetes même en visitant d'autres sites. J'ai donc étudier le problème et me suis apperçu que le meta http refresh provoque une sorte de bug dans l'iframe, qui continue de s'executer même en sortant du site (au bout de 2 refresh de la balise meta l'iframe ne se décharge plus!).

     

    J'ai donc fait un code "exploit" de sécurité qui permet d'envoyer du code javascript à un visiteur même quand il sort de la page visitée.

     

    Copier ce code dans un fichier.php pour voir le problème (visiter cette page php, et naviguer sur google par exemple. des popups continuent à s'afficher et le client continue à envoyer des requetes sur le serveur !!!!).

     

    <?
     $frame = $_GET["frame"];
     if($frame == 1) echo "<html><head><meta http-equiv=\"refresh\" content=\"1; url=?frame=2\" /></head></html>";
     if($frame == 2 or $frame == 3) {
     $ra = $_SERVER["REMOTE_ADDR"];
    ?>
    <html>
     <head>
      <script type="text/javascript">
       <? if($frame == 3) echo "alert(\"Salut $ra ! Ceci est une faille de sécurité, Internet Explorer 7 est toujours connectée sur Serveurperso.com !\");"; ?>
      </script>
      <meta http-equiv="refresh" content="10; url=?frame=3" />
     </head>
    </html>
    <?
     } else {
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html>
     <head>
      <title>
       Faille de sécurité Internet Explorer 7 ?
      </title>
      <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
     </head>
     <body>
      Visiter d'autres site à partir de cet onglet...
      <iframe src="?frame=1" width="0" height="0"></iframe>
     </body>
    </html>
    <?
     }
    ?>

    J'ai hate que Microsoft corrige le problème IE7 car cela génère pas mal de requetes sur mon site pour rien (shoutbox et commandes de mon robot wifi) à cause des visiteurs sous IE7.

     

    Ma question est : Ou reporter ce bug ou cette faille qui me semble assez importante, le report de bug Internet Explorer 7 étant fermé pour le moment....

     

    Merci

    Pascal de Serveurperso.com

    • Modifié Fabien Lavocat vendredi 17 avril 2009 09:46 Correction du titre
    dimanche 8 juillet 2007 13:36

Réponses

  • Note :

    Le bug/la faille ne devrais plus se produire si le meta refresh est remplacé par l'équivalent javascript :


    <? echo "function rafraichir() { document.location.href = \"?diversvariables=valeurs&etc=etc\"; } setTimeout(\"rafraichir()\", ".strval($nbsecondes * 1000).");"; ?>

    A essayer sous IE7 des que possible...

    jeudi 12 juillet 2007 12:14
  •  

    Salut info@ara-creation.ch

     

    Comme le sujet l'indique, il sagit d'un code qui exploite une éventuelle faille de sécurité IE7 et non d'un exemple de programmation de site Internet.

     

    Pour exploiter une faille il est souvent question de ruses de programmation ce qui est l'oposé d'un respect des normes (perso je code uniquement en XHTML 1.0 Strict validé par le W3C et ayant une sémantique propre et surtout très facile a la maintenance).

     

    Par ailleurs:

    $frame = $_GET["frame"];

     

    Indique forcément que le serveur Apache est configuré de maniere sécurisée avec la directive "Register Global" sur OFF qui permet d'interdire la création implicite de variable PHP a partir de l'URL.

     

    Les données de la variable $frame peuvent être n'importequoi en provenance de l'URL MAIS mon script d'exemple utilise cette variable a des fins de test inquement :

     

     if($frame == 1) echo "<html><head><meta http-equiv=\"refresh\" content=\"1; url=?frame=2\" /></head></html>";
     if($frame == 2 or $frame == 3) {

     

    C'est 100% sécurisé car si la variable n'est pas exactement "1" ou "2" ou "3" cela n'apporte rien au code !

     

    Je cite "oriente toi vers les sécurité de type stripslash and co."

    C'est htmlspecialchars() qui est adapté a la protection du site contre divers failles dites XSS (cross site scripting) en provenance des entrées utilisateurs. Perso je filtre aussi tout les caractères non nécessaire avec preg_replace("/[^\x20-\xFF]/", "", $texte)...

     

    Pascal

    mardi 20 janvier 2009 11:44

Toutes les réponses

  • Note :

    Le bug/la faille ne devrais plus se produire si le meta refresh est remplacé par l'équivalent javascript :


    <? echo "function rafraichir() { document.location.href = \"?diversvariables=valeurs&etc=etc\"; } setTimeout(\"rafraichir()\", ".strval($nbsecondes * 1000).");"; ?>

    A essayer sous IE7 des que possible...

    jeudi 12 juillet 2007 12:14
  • Salut,

     

    Les iframes ne sont pas conseillé pour le référencements et ne sont plus au normes.

     

    Par ailleurs:

    $frame = $_GET["frame"];

     

    $frame n'est pas sécurisé, oriente toi vers les sécurité de type stripslash and co.

     

    mardi 7 octobre 2008 09:26
  •  

    Salut info@ara-creation.ch

     

    Comme le sujet l'indique, il sagit d'un code qui exploite une éventuelle faille de sécurité IE7 et non d'un exemple de programmation de site Internet.

     

    Pour exploiter une faille il est souvent question de ruses de programmation ce qui est l'oposé d'un respect des normes (perso je code uniquement en XHTML 1.0 Strict validé par le W3C et ayant une sémantique propre et surtout très facile a la maintenance).

     

    Par ailleurs:

    $frame = $_GET["frame"];

     

    Indique forcément que le serveur Apache est configuré de maniere sécurisée avec la directive "Register Global" sur OFF qui permet d'interdire la création implicite de variable PHP a partir de l'URL.

     

    Les données de la variable $frame peuvent être n'importequoi en provenance de l'URL MAIS mon script d'exemple utilise cette variable a des fins de test inquement :

     

     if($frame == 1) echo "<html><head><meta http-equiv=\"refresh\" content=\"1; url=?frame=2\" /></head></html>";
     if($frame == 2 or $frame == 3) {

     

    C'est 100% sécurisé car si la variable n'est pas exactement "1" ou "2" ou "3" cela n'apporte rien au code !

     

    Je cite "oriente toi vers les sécurité de type stripslash and co."

    C'est htmlspecialchars() qui est adapté a la protection du site contre divers failles dites XSS (cross site scripting) en provenance des entrées utilisateurs. Perso je filtre aussi tout les caractères non nécessaire avec preg_replace("/[^\x20-\xFF]/", "", $texte)...

     

    Pascal

    mardi 20 janvier 2009 11:44