IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Sécurité Discussion :

Isoler les sources: votre avis ?


Sujet :

Sécurité

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 92
    Points : 57
    Points
    57
    Par défaut 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 : Sélectionner tout - Visualiser dans une fenêtre à part
      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 : Sélectionner tout - Visualiser dans une fenêtre à part
      <?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 : Sélectionner tout - Visualiser dans une fenêtre à part
      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 : Sélectionner tout - Visualiser dans une fenêtre à part
      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 : Sélectionner tout - Visualiser dans une fenêtre à part
      <?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.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 91
    Points : 92
    Points
    92
    Par défaut
    autre manière de procéder, des include afin de récupérer les scripts et variables placés en amont du site c'est-à-dire un dossier /inc/ dans le dossier Parent du dossier www ou html

    vous me comprenez ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 92
    Points : 57
    Points
    57
    Par défaut
    Oui c'est à dire ne stocker en amont que les variables sensibles, comme par exemple les paramètres de connexion à la BDD, de serveur mail, etc.

    L'intérêt de ce que j'ai fait c'est aussi de ne pas répéter les includes présent dans le layout dans chaque page du site.

    Je charge une seule fois le layout souhaité et j'inclus la partie qui change en fonction de la pages demandée.

    C'est vrai que je ne fais que reproduire à ma manière le fonctionnement des MVC.
    Mon "init.php" serait un bootstrap et le fichier "routing.php" un controller qui gère d'une façon personnalisée les actions

    Je commence à me demander, en étant aussi proche des MVC si je n'ai pas plus intérêt à utiliser ces derniers :p

    Simplement, comme il s'agit d'un site simple, ne pas utiliser les MVC permet de ne pas trop complexifier le code.

    Donc, non seulement j'isole les données sensibles mais ça rend le site plus facile à maintenir graphiquement.

    Benjamin.

Discussions similaires

  1. Réponses: 0
    Dernier message: 14/04/2015, 15h05
  2. Réponses: 7
    Dernier message: 14/05/2009, 15h08
  3. Réponses: 8
    Dernier message: 10/06/2007, 00h43
  4. Donnez votre avis sur les articles de Developpez.com
    Par Geronimo dans le forum C++Builder
    Réponses: 13
    Dernier message: 14/01/2007, 22h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo