Isoler les sources: votre avis ?
Bonjour,
Ma question :
J'ai subitement eu envie ce matin de revoir toute l'arbo d'un site sur lequel je bosse.
Pourquoi ? pour virer toutes les sources php du ftp... Maintenant je me demande si d'un point de vu sécurité ça a vraiment un intérêt.
Donc, si vous voulez donner vos avis sur la question suivante : Est-ce que ma démarche ajoute vraiment une sécurité supplémentaire ou est-ce totalement inutile ? :)
Explications :
- Un site classique (sans traitements particuliers) de société
- Deux structures communes à plusieurs pages (deux layouts différents)
- Des contenus textuels isolés : fichiers html ne contenant que ça
- Des scripts php (ex: envoi de mails)
Donc j'ai procédé de la manière suivante :
- Arborescence : type MVC mais sans MVC (je rappelle qu'il s'agit d'un site classique)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
|
[.]application
[.]site
[.]config
-config.ini
-init.php
-routing.php
[.]lib : contient les lib php (ex: phpmailer) et mes scripts perso (ex: envoi de mails)
[.]models : contient mes classes (ex: news, qui accèdent à la BDD)
[.]views
[.]layouts : contient mes deux layouts + tout ce qui compose la structure des pages
[.]scripts : contient les pages html de contenu
[.]espace-clients
[.]config
[.]lib
[.]models
[.]views
[.]layouts
[.]scripts
[.]public
[.]espace-clients
[.]site
[css]
[images]
[js]
-.htaccess
-index.php |
- Apache :
- L'alias du site internet pointe vers le répertoire "/public/site" (qui ne contient que l'index.php et les ressources (img, css, js, etc.)
- L'alias de l'espace-clients pointe vers le répertoire "espace-clients" à la racine
- .htaccess : redirige tous les documents sauf les ressources (img, flash, etc.) vers l'index
- FTP : le ftp pointe sur le répertoire "public/site"
- index.php : inclut le fichier init.php
Code:
<?php require_once('../../application/site/config/init.php'); ?>
- init.php : initialise tout ce qui va bien, crée la connexion à la base et inclut ensuite le fichier "routing.php" :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
// configuration de la localisation
...
// configuration des affichages des erreurs
...
// chargement de la config
...
// chargement des classes et librairies
...
// connexion à la BDD
...
define('SRC_APPLI', '../../application/site');
...
require_once(SRC_APPLI.'/config/routing.php'); |
- routing.php : contient un gros switch qui récupère le nom de la page demandée ($_SERVER['REQUEST_URI']) et en fonction de la page configure des variables :
- $header_title = 'titre de la page'; (+ aussi les variables meta)
- $layout = 'nom du layout pour cette page';
- $content_source = 'page html de contenu pour cette page';
Ou - $request_script = 'script php'; (si c'est un script php qu'on demande)
Une fois ces variables connues, si $request_script et rempli j'appelle le script, sinon, j'appelle le layout :
Code:
1 2 3 4 5 6 7
|
if (!empty($request_script)) {
require_once(SRC_APPLI.'/lib/'.$request_script);
}
else {
require_once(SRC_APPLI.'/views/layouts/'.$layout);
} |
- Layouts : contient les différents layouts qui eux-même incluts les différentes parties (menu, header, footer, etc.) + le contenu html (textuel)
Les layouts contiennent donc la ligne suivante :
Code:
<?php include(SRC_APPLI.'/views/scripts/'.$content_source); ?>
Résultat :
Le FTP n'accède qu'au fichier index.php qui ne contient rien de plus qu'un require_once, et aux ressources (img, css, js, etc.)
On ne peut donc récupérer aucune source et donc aucune information d'identification (BDD par ex.).
Evidemment je n'invente rien, je me suis simplement inspiré du modèle MVC, mais ne m'étant pas aidé de méthodes d'autres personnes, je me demande si mon raisonnement est valable ou utile.
A vous de me dire si tout ça a un sens :)
Merci !
Benjamin.