Pseudo frame : problème

Pseudo frame : problème - PHP - Programmation

Marsh Posté le 15-10-2003 à 11:42:55    

Bonjour,
 
J'utilise depuis un petit moment déjà un script de pseudo frame :
main.php

Code :
  1. <?
  2. //donc voilà notre tableau qui contien la liste des pages possibles
  3. $liste_pages = array(
  4.   "editorial.php",
  5.   "presentation.php",
  6.   "accueil.php",
  7.   "articles.php",
  8.   "chat.php",
  9.   "liens.php",
  10.   "guestbook/index.php",
  11.   "livredor/index.php",
  12.   "page2.php"
  13.   //etc...
  14. );
  15. //si $page est TRUE, existe et n'est pas vide alors
  16. //on peut essayer de voir si une correspondance va avec l'array
  17. if($page && isset($page) && !empty($page)) {
  18.  
  19.   //on définie une variable témoin qui permetra de savoir si une
  20.   //une page a été trouvée ou pas afin de décider si on dois inclure
  21.   //la page par défaut ou pas
  22.   $page_trouve = 0;
  23.  
  24.   //ensuite on teste une valeur de $liste_pages avec $page afin de voir si elles
  25.   //sont identiques et si oui, alors on a trouvé une page correct
  26.   if(in_array($page, $liste_pages))  {
  27.     //on peut donc proceder à l'include ou au require sans se poser de question
  28.     require($page);
  29.  
  30.     //ensuite on donne une valeur TRUE a $page_trouve afin d'éviter d'inclure
  31.     //la page par défaut si aucune occurance n'est trouvé
  32.     $page_trouve = 1;
  33.  
  34.   } //fin du if() qui cherche la correspondance entre $page et l'array
  35.  
  36.   //maintenant si aucune page n'a été trouvé, il faut inclure une page par défaut
  37.   if(!$page_trouve) {
  38.     require("accueil.php" );
  39.   }
  40. } else { //fin du if() qui vérifiait si le contenu de $page était acceptable
  41.   //ce else permet d'inclure une page par défaut dans le cas ou $page était
  42.   //soit inexistant, soit vide, soit incorrect
  43.   require("accueil.php" );
  44. }
  45. ?>


avec le fichier d'appel index.php :

Code :
  1. <html><head>
  2. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  3. </head>
  4. <body bgcolor="#FFFFFF" text="#000000">
  5. <table width="100%" border="0" cellspacing="0" cellpadding="0" align="center"> 
  6. <tr>   
  7. <td colspan="3">     
  8. <? include('titre.php'); // L'entete de votre site ?>     
  9. </td> 
  10. </tr> 
  11. <tr>   
  12. <td valign="top" width="150" nowrap>     
  13. <? include('frame.php'); // la page menu de votre site ?>     
  14. </td>   
  15. <td width="10">&nbsp;
  16. </td>   
  17. <td valign="top" width="100%"> 
  18. <? require('main.php'); ?> 
  19. </td> 
  20. </tr>
  21. </table>
  22. </body>
  23. </html>


 
Comme expliqué sur cette page : http://www.toutestfacile.com/phpin [...] ap=frames0 :

Citation :

Les plus futés d'entre vous, auront vite remarqué qu'il est possible de remplacer le bloc switch par un unique appel  
 
include($page);  
 
où $page contiendrait directement le chemin du fichier à inclure.  
 
Cela est tout à fait possible mais ATTENTION cela est également extrêmement risqué si vous ne prenez pas toutes les mesures appropriées. Il serait alors en effet possible à quiconque de saisir sa propre valeur pour $page pour pouvoir faire exécuter par VOTRE serveur un bout de code écrit par une autre personne (et pouvant donc contenir des instructions préjudiciables à la bonne santé de votre site). Ce "hacker en herbe" peut au choix préciser dans $page l'URL d'une page de l'un de ses sites qui retourne un bout de code PHP ou bien, plus vicieux, il peut faire pointer $page sur un des fichiers de VOTRE site mais, fichier, dont il peut altéré le contenu (ex: fichier stockant un livre d'or, fichier de log, etc...) et donc y insérer du code PHP.
 
Si vous optez pour cette option, veillez donc bien à faire un contrôle poussé sur $page pour n'autoriser qu'un nombre restreint de page (limiter à une zone bien définie de votre site).
 
Nous vous déconseillons donc d'utiliser les pseudo-frames, à la place, utilisez plutôt la technique de l'en-tête et pied de page que nous décrivons au chapitre suivant.


 
Donc voici mon problème : j'aimerai intégrer mon livre d'Or DANS le jeu de pseudo-frame, au lieu de l'ouvrir dans une nouvelle page.
J'ai donc rajouté la ligne "guestbook/index.php", à mon fichier main.php
Le soucis, c'est que tous les liens propres au Livre d'Or sont relativement complexe et il est impossible de tous les prévoir pour les rentrer dans le main.php
Autrement, seule la première page du livre d'Or s'affiche dans le cadre voulu de la pseudo frame, mais dès que l'on valide une action sur ce livre d'or, le lien ne prends plus en compte les pseudo frame.
Bon je sais je suis pas clair ce matin mais ça commence à me lourder cette histoire.
Je cherche en fait un système de pseudo frame qui soit souple (pour intégrer mon Livre d'Or) et sécurisé (pour qu'on ne puisse pas exécuter n'importe quel script)
Vous n'auriez pas des tuyaux là ? :sarcastic:

Reply

Marsh Posté le 15-10-2003 à 11:42:55   

Reply

Marsh Posté le 15-10-2003 à 14:34:35    

Ben si le livre d'or n'a pas été prévu pour pouvoir s'intégrer n'importe où, ya pas de solution, à part réécrire le livre d'or ou l'adapter.  

Reply

Marsh Posté le 15-10-2003 à 14:45:01    

ok c bien ce que je pensais...
merci

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed