Faille include

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Faille include

par zeus » 26 avr. 2006, 09:25

@Ryle : pas con ton idée :-k

J'aime bien. On pourrait se limiter à la recherche de './' ('../' etant inclu) et on peut permettre une arborescence.

par Florent » 26 avr. 2006, 07:03

Bonjour
pour une simple recherche de caractères, strpos() sera plus performant que eregi()
J'étais donc pas loin.
Merci à tous.

par Ryle » 25 avr. 2006, 10:26

Personnellement, ce n'est pas le caractère "/" que je recherche, mais les "../" (voire juste "./").

Cela me permet de structurer le dossier dans lequel sont les pages avec d'éventuels sous dossier (plus pratique à mon sens pour m'y retrouver dans mes pages :)).

La variable $_GET['page'] peut ainsi prendre la valeur dossier/page pour aller chercher la page "page.php" du dossier "dossier", mais jamais remonter dans les dossier parents :)

par zeus » 25 avr. 2006, 09:34

@mafio : et si je donnes la valeur '../autre/rep/fichier.php' :?: ça va fonctionner sauf qu'on sort du répertoire page ;)

Je pense que la détection du caractère / est indispensable

Ensuite, pour une simple recherche de caractères, strpos() sera plus performant que eregi()
if (strpos("/",$_GET['page']) === FALSE){
  include('acceuil.php');
} else {
    if(isset($_GET['page']) AND file_exists($_GET['page'].'.php')) {
        include $_GET['page'].'.php';
    } else {
      include('acceuil.php');
    }
}

par mafio » 24 avr. 2006, 20:14

 <?php

if(isset($_GET['page']) && file_exists('/pages/'.$_GET['page'].'.php'))
{
// On place toutes les pages du site dans le repertoire /pages
include('/pages/'.$_GET['page'].'.php');
}
else
{
include('home.php');
}
?>
Je pense que c'est une des meilleurs solution niveau securité, enfin a toi de juger

par Florent » 24 avr. 2006, 18:52

Désolé pour le message précédent, j'ai pas vu que je n'étais pas connecté.

Au final j'ai fais ça :
if (eregi("/",$_GET['page'])){include('acceuil.php');}
else {
	if(isset($_GET['page']) AND file_exists($_GET['page'].'.php')){
		include $_GET['page'].'.php';
		}
	else {include('acceuil.php');}
}
Ca fait pas terrible mais ça marche. :roll:

par Invité » 24 avr. 2006, 17:58

Tu vérifie qu'il n'y ai pas le caractère \ dans l'url
Et oui en fait c'est tout c**

Mais là il s'agit d'une partie que je ne maitrise vraiment pas, alors je ne sais comment faire.
Pourriez vous me dépanner, ou m'indiquer où je peu trouver un petit "cours" là dessus ?

En tout ca merci beaucoup.

par mafio » 24 avr. 2006, 14:49

Salut,

Perso, j'utilise une methode qui marche bien lol :

voici le code
<?php

if(isset($_GET['page']))
{
include('/pages/'.$_GET['page'].'.php');
}

?>
En fait je place juste toutes les pages de mon site dans un repertoire, et perso sa marche bien, enfin moi je propose sa, mais c'est a toi de voir

ou sinon la methode que jutilisai au debut, ( phpdebutant )

on créé un tablo avec toutes les pages autorisé

et apres on verri si la page se trouve bien dans le tableau, si oui, on l'inclu

http://phpdebutant.org/article68.php

Voila j'espere t'avoir aidé

par zeus » 24 avr. 2006, 14:31

Ou de caractère /
:oops: autant pour moi

par mere-teresa » 24 avr. 2006, 14:29

Ou de caractère /

par zeus » 24 avr. 2006, 13:15

Tu vérifie qu'il n'y ai pas le caractère \ dans l'url

Vu que c'est le séparateur dans une url, s'il n'est pas présent, c'est qu'on est dans le même répertoire

Faille include

par Florent » 24 avr. 2006, 13:12

Bonjour
J'ai un site où j'inclus mes pages comme ceci :
if(isset($_GET['page']) AND file_exists($_GET['page'].'.php')){
	
	include $_GET['page'].'.php';
	}
else {include('acceuil.php');}
Et si dans l'url je fais par exemple index.php?page=../un fichierexistant

donc d'un autre répertoire, il s'inclut bien.
Je me demande comment éviter ça ?
En clair comment faire pour que le fichier à inclure soit existant, mais dans le dossier en cours...

Autrement qu'en faisant un truc de ce style :
if ($page == connection) {include('connection.php;}
if ($page == fichier) {include('fichier.php;}
etc...
parceque la liste serait longue.
Merci