Faille dans 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 dans Include

par AB » 01 janv. 2007, 15:44

Avec la méthode que j'ai indiqué plus haut, il n'y a qu'à ajouter des cases
dans la fonction inclure($page) ex
function inclure($page) { 
switch ($page) { 
case "0" : $page = 'Pages/tapagepardéfaut.php'; break; 
case "1" : $page = 'Pages/Logos.php'; break; 
case "2" : $page = 'etc..'; break; 
} 
return ($page); 
} 
et pour appeler les pages: tonsite?page=1
chargera ta page logo sans ambiguité

par Cyrano » 01 janv. 2007, 15:41

As-tu suivi les différents liens ? As-tu vu celui-ci ?

par Truc » 01 janv. 2007, 15:39

En partant de l'exemple du lien donné avec un peu plus de commentaires :
<?php

// configuration des pages acceptées
//ici toutes les pages (nom des fichiers, sous forme de tableau) qui peuvent être affichées

$pages = array(
  'accueil' => 'accueil',
  'recep' => 'reception',
  'envoi' => 'envoi',
  'ecrire' => 'ecrire'
);

// page par défaut
$page_par_defaut = 'accueil';

// pré-exécution commune à tout le site
// ...

// inclure la bonne page
//test de l'existence de la variable de l'URL ("page")
$page = isset($_GET['page']) ? $_GET['page'] : $page_par_defaut;

//on vérifie si la variable passée dans l'url est une des pages exécutables
$script = isset($pages[$page]) ? $pages[$page] : $pages[$page_par_defaut];

//inclure la page autorisée
include 'pages/' . $script . '.php';

// post-exécution commune à tout le site
// ...

?> 

par Au secours » 01 janv. 2007, 15:26

Ok merci pour l'info.
Par contre :oops: vous serez t'il possible de me faire le début du code pour la protection et je continuerai moi même.
Mes pages sont dans le dossier Pages/

Exemple avec la page Logos.php

Comment dois je procéder ?
Merci à tous.

par AB » 01 janv. 2007, 15:22

Etant donné que file_exists ne fonctionne pas sur les fichiers distants, normalement ça devrait suffire.

Mais bon, comme je ne connais pas toutes les ficelles des pirates, je préfère blinder pour être sûr.

Donc je te conseilles de commencer avec ta correction dans un premier temps, et quand tu auras un peu plus de temps d'appliquer l'une des méthodes que l'on t'a indiqué.

par Au secours » 01 janv. 2007, 15:06

Ouh la c'est compliqué pour moi Lol
Egalement on ma dit qu'il fallait mettre allow_url_fopen sur OFF chez OVH mais je n'arrive pas à trouver mon php.ini

J'espère que je ne vais plus me faire piraté :cry:

par Truc » 01 janv. 2007, 14:57

ça peut être bon...

Sinon regarde cet exemple.

par Au secours » 01 janv. 2007, 14:55

J'ai modifié le code en ca :

Code : Tout sélectionner

<?php if(isset($_GET['id']) && file_exists($_GET['id'].'.php')) { include $_GET['id'].'.php'; } else { include '404.php'; } ?>
Ca peut être bon ?

par AB » 01 janv. 2007, 14:50

Ta variable $_GET['id'] représente quoi? une page de ton site que tu veux inclure?

si oui on peut faire quelque chose comme

$page = isset($_GET['page'])? intval($_GET['page']) : 0 ;

function inclure($page) {
switch ($page) {
case "0" : $page = 'accueil.html'; break;
case "1" : $page = 'deuxiemepage.html'; break;
case "2" : $page = 'troisiemepage.html'; break;
etc...
}
return ($page);
}

et
<?php $includepage = (file_exists(inclure($page)))? inclure($page) : 'accueil.html';
include("$includepage"); ?>

Avec cette méthode, <a href="?page=1">lien</a> incluera 'deuxiemepage.html'

D'une manière générale il faut absolument vérifier une variable insérée dans un include. Car sinon un pirate même débutant peut envoyer dans la barre d'adresse : adressedetonsite?id=adressedemapagepirate
et donc include (adressedemapagepirate)

par Cyrano » 01 janv. 2007, 14:28

Il est très dangereux de faire un include() de données utilisateur sans les valider au préalable : or une donnée issue de l'url via $_GET vient de l'utilisateur et peut donc être modifiée par cet utilisateur : faire directement un include() t'expose à ce que tu as subi : une injection de code.

par jojolapine » 01 janv. 2007, 14:24

Faille dans Include

par Au secours » 01 janv. 2007, 13:50

Bonjour à tous
Je n'arrete pas de me faire piraté mon site par le meme pirate et la il ma mis un message violent ; en gros si je remets le site sur pied il détruit tout!

Voici le code que j'ai mis sur Pages.php :
<?php include ($_GET['id'] . ".php");?>

Comment faire pour sécuriser cette page d'une facon simple ?
Merci à tous et bonne année