Sécurité Prestashop

Prestashop 1.7 – Sécuriser le back-office (ép. 81)

Bien souvent quand on pense à la sécurité c’est qu’il est arrivé quelque chose de grave et qu’il est déjà trop tard… Aie oui, vous avez perdu vos données ? Quelqu’un a pris possession de vos accès ? Pensez à anticiper ces risques pour ne pas vous retrouver dans une impasse.

Failles de sécurité sur Prestashop

Concrètement de ce que j’ai pu voir jusqu’à ce jour, Prestashop n’est pas un CMS réellement exposé à des failles de sécurité, contrairement à WordPress où là si vous ne faites pas les mises à jour régulièrement… à coup sûr 6 mois, voir 1 an plus tard vous vous faites pirater. Avec Prestashop c’est différent, vous pouvez avoir une ancienne version Prestashop 1.4 sans aucun problème d’intrusion et ça c’est une très bonne nouvelle… l’outil tient dans la durée sans devoir faire de mise à jour régulières.

Le FTP la zone de hacking n°1

Bien souvent le FTP c’est l’une des zones très sensible, car l’accès n’est pas changé régulièrement. Cela veut dire que l’on peut parfois accéder à votre serveur pendant des années avec le même login et avoir accès aux fichiers sources du Prestashop. Là par contre, j’ai vu des marchands se faire pirater, car l’accès FTP traînait sur un Post-it ou dans des archives de mail échangés de multiples fois avec des tiers… Instaurez une règle de changer régulièrement votre accès FTP et de supprimer les accès inutilisés.

Protéger le backend Prestashop ?

Pour ce point c’est ce que je vais vous montrer tout à l’heure… le but c’est que l’accès au back-office ne reste pas le même en permanence. Cela évite que des petits malins tentent des combinaisons de connexions sur la page de login… ou que parfois même des ex-employés … une fois hors de l’entreprise essaient d’accéder à vos données (oui j’ai déjà vu beaucoup de choses). A travers le tutoriel on verra une méthode dynamique pour changer cet accès régulièrement.

Piraté par un module Prestashop ?

Est-ce que les modules Prestashop peuvent contenir des Spywares ? De mon expérience je n’ai jamais vu ça… Pour éviter les risques, si vous installez des modules gratuits Prestashop prenez-les sur le forum ou sur des sites Prestashop connus de la communauté. Par contre, évitez les modules gratuits sur des sites étrangers, car vous ne savez pas ce que peut faire le module… parfois il peut y avoir une seule ligne de code qui permet de donner accès à vos données à un parfait inconnu. Typiquement j’évite de prendre des modules Prestashop gratuits sur des sites des pays de l’Est ou Russie… même s’ils semblent super.

Etre toujours en mouvement

En fait c’est l’une des clés… le but n’est pas d’être « invulnérable » mais surtout d’être une cible mouvante. Si vous changez régulièrement vos urls d’accès et vos mots de passes, le niveau de sécurité Prestashop fait un bon en avant. Parfois j’ai vu des Prestashop avec 20 comptes employés… et l’e-commerçant me fait la remarque « Ah oui il travaille plus chez nous, il faut l’enlever lui… » Pourtant, cela fait des mois que l’employé n’est plus en interne… A-t-il accédé aux données depuis son domicile ? A-t-il exporté des données ? Finalement, on n’en sait rien… Prenez les mesures nécessaires & anticipez, cela doit faire partie de votre stratégie d’entreprise.

Pour ce tutoriel vous avez à disposition :

  • 1 x fichier « security.php » (pour sécuriser la zone admin)

Télécharger

Résumé de la vidéo : Améliorer la sécurité de sa boutique Prestashop

  • Avant tout, assurez-vous que vous n’avez pas de tâches planifiées incluant l’url de votre back-office, car le lien de votre back-office va changer automatiquement chaque jour.
  • Intégrez le script « security.php » et indiquez dans le code PHP le nom exact du dossier d’administration, ensuite exécutez l’url du script et magie le nom du dossier admin va changer.
  • Si le processus fonctionne, il suffit ensuite de mettre une tâche planifiée vers ce script une fois par jour à minuit pour l’actualisation du nom du dossier.
Notez mon billet, Google va adorer :
1 étoiles - J'aime pas !2 étoiles - Bof !3 étoiles - Bien !4 étoiles - Très bien !5 étoiles - Génial ! (6 votes, moyenne : 5,00 sur 5)
Loading...

6 commentaires sur “Prestashop 1.7 – Sécuriser le back-office (ép. 81)”

  1. Hello Germain,
    On peut générer des noms aléatoires plutôt qu’utiliser des dates, avec un truc de ce style :

    /* 19.07.19 - Webbax | TUTO 81 sécurité BO */
    require_once(dirname(__FILE__).'/config/config.inc.php');
    $folder_name = 'administration';
    
    $SECURITY_FOLDER_VERSION = Configuration::get('SECURITY_FOLDER_VERSION');
    $SECURITY_FOLDER_DATE = Configuration::get('SECURITY_FOLDER_DATE');
    if(empty($SECURITY_FOLDER_VERSION)){
        $SECURITY_FOLDER_VERSION = $folder_name;
    }
    
    $version = genRandomString();
    $date = date('Ymd');
    
    if ($date != $SECURITY_FOLDER_DATE) {
        Configuration::updateValue('SECURITY_FOLDER_DATE',$date);
        // tentative 1
        @rename(dirname(__FILE__).'/'.$folder_name,dirname(__FILE__).'/'.$folder_name.$version);
        // tentative 2
        @rename(dirname(__FILE__).'/'.$folder_name.$SECURITY_FOLDER_VERSION,dirname(__FILE__).'/'.$folder_name.$version);
        Configuration::updateValue('SECURITY_FOLDER_VERSION',$version);
    }
    
    function genRandomString($length=14) 
    {
       $characters = '0123456789abcdefghijklmnopqrstuvwxyz';
       $string ='';    
       for ($p = 0; $p < $length; $p++) {
           $string .= $characters[mt_rand(0, strlen($characters) -1 )];
       }
       return $string;
    }
    

    Cela évite de pouvoir tricher en connaissant ton astuce et tester des dates dans les URL

    1. Hello,

      Merci beaucoup pour la contribution c’est top.

      En fait l’inconvénient de l’aléatoire c’est qu’on ne peut pas deviner l’accès du back-office, sans aller voir physiquement le nom du dossier dans le FTP mais clairement alors là oui on monte encore d’un niveau 😉

      A bientôt !

    2. Bonjour,
      Premièrement merci Germain !
      Et deuxièmement je comprends bien la logique du code donné par Cyssoo, mis à part qu’une portion de code ne fonctionne pas…
      Dans la fonction :
      function genRandomString($length=14)
      à la ligne :
      for ($p = 0; $p < $length; $p++)
      Le ; ne passe pas, je ne m’y connais pas plus que ça mais je n’ai pas trouvé de solution.
      Une idée ?
      Merci de votre aide

      1. Hello Toyser,
        En fait je donnais juste une idée un peu « geek » pour davantage améliorer la bonne idée de Germain.
        La fonction de génération d’une chaîne de caractères aléatoire provient de StackOverflow, mais je rejoins tout de même Webbax sur la réponse qu’il m’a faite.
        Finalement, si vous maîtrisez l’accès FTP et vérifiez les personnes ayant accès à votre site, vous n’aurez à mon avis aucun besoin d’un code aussi poussé que celui que j’ai suggéré, ni même de celui de Germain, si ce n’est pour votre propre culture personnelle et l’amélioration de vos compétences 🙂

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *