Child pages
  • Guide de l'administrateur système

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents
maxLevel3

...

Guide de l'administrateur système

...

En résumé, il est essentiel que les directives suivantes aient les réglages indiqués :

Code Block
html
html

extension = php_mysql.dll
extension = php_gd2.dll
allow_url_fopen = On

...

En somme, il est fortement recommandé que les directives suivantes aient les réglages indiqués :

Code Block
html
html

register_globals = Off
magic_quotes_gpc = Off
allow_url_include = Off

...

Ainsi, si vous disposez d'un compte MySQL capable de créer d'autres utilisateurs, voici comme s'y prendre en ligne de commande :

Code Block
html
html

mysql -u USERNAME -p PASSWORD

Vous pourriez également utiliser la requête SQL suivante:

Code Block
html
html

mysql> USE mysql;
mysql> CREATE USER 'username'@'servername' IDENTIFIED BY 'new_password';

...

Nous devons autoriser cet utilisateur à utiliser la base de données de PrestaShop, et configurer ses droits par la même occasion. Voici un modèle de requête SQL :

Code Block
html
html

mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, ALTER
     > ON 'prestashop'.* TO 'new_user'@'localhost';
mysql> FLUSH PRIVILEGES;

...

Pour mettre en place une authentification de base sur votre dossier d'administration, vous devez ajouter un fichier .htaccess à ce dossier (par exemple, dans /var/www/prestashop/admin) :

Code Block
html
html

AuthUserFile /var/www/.prestashop_admin
AuthName "Prestashop Admin Access"
AuthType Basic
Require valid-user
Options -Indexes

...

Voici un modèle de contenu pour le fichier .prestashop_admin avec deux logins et leurs mots de passe :

Code Block
html
html

login1:$apr1$/wJeliK8$e9OzgRaVL8J8wSsFBXjor1
login2:$apr1$yV65Kqqz$cFt3sV2.Q7hhLRRUJDo5a/

...

Il est également possible de limité l'accès par domaine ou adresse IP, via le fichier .htaccess :

Code Block
html
html

Order Allow, Deny
Deny from all
Allow from .myprestashop.com
Allow from 127.0.0.1

Cependant, vous ne devriez pas utiliser cette sorte de directive :

Code Block
html
html

<LIMIT GET POST>
Require valid-user
</LIMIT>

...

  1. Sécuriser le back-office
    1. Renommez votre dossier /admin après l'installation de PrestaShop. C'est essentiel, au point que vous ne pouvez pas accéder à votre administration si vous n'avez pas fait cette modification. Assurez-vous d'utiliser un nom de dossier réellement unique, idéalement un mélanger de lettre et de chiffres, par exemple "pr3st4dm1n".
    2. Protégez votre dossier d'administration avec les fichiers .htaccess et .htpasswd, ou demandez à votre hébergeur de le faire pour vous.
    3. Ne laissez pas votre navigateur garder la trace de vos mots de passe (via des cookies ou n'importe quel autre outil).
    4. Choisissez un mot de passe complexe, mélangeant lettres, chiffres et même ponctuation, comme "5r3XaDR#". Vous pouvez et même devriez utiliser un générateur de mot de passe, tel que celui de PCTools (http://www.pctools.com/guides/password/) ou celui de GRC (https://www.grc.com/passwords.htm).
  2. Sécuriser votre installation PHP
    1. Utilisez les réglages PHP requis et recommandés, au début du présent document.
  3. Effacez toujours le dossier /install de votre serveur après avoir installé ou mis à jour PrestaShop.
  4. Effacez les fichiers inutiles de votre serveur de production :
    • tous les fichiers readme_xx.txt.
    • le fichier CHANGELOG.
    • le dossier /docs.
  5. Interdisez l'accès aux fichiers de votre thème, à l'aide d'un fichier .htaccessayant le contenu suivant:

    Code Block
    html
    html
    
    <FilesMatch "\.tpl$">
    order deny,allow
    deny from all
    </FilesMatch>
    

...

  • Activer le cache de MySQL (ou demandez à votre hébergeur de le faire pour vous), et donnez-lui une taille élevée (par exemple, 256M).
  • N'oubliez pas de mettre $smarty->force_compile à "false" quand vous passez en mode de production, que ce soit via le fichier smarty.inc.php ou le back-office.
  • Si vous le pouvez, utiliser un cache d'opcode (ou demandez à votre hébergeur d'en installer un pour vous), afin d'alléger la charge de traitement du serveur. PrestaShop est compatible avec eAccelerator (http://eaccelerator.net/). "Opcode" signifie "code opérationnel", et défini l'état de compilation des fichiers dynamiques, qui peuvent être traités plus rapidement.
  • Si possible, placez vos éléments statiques sur plusieurs domaines ou sous-domaines, afin de profiter de connexions HTTP parallèles. Pour ce faire, ouvrez le fichier /config/defines.inc.php et ajoutez-y ces lignes (adaptées à vos propres besoins) :
Code Block
html
html

if ( $_SERVER['REMOTE_ADDR'] != '127.0.0.1' )
{
  define( '_THEME_IMG_DIR_',   'http://img2.xxx.com/'       );
  define( '_THEME_CSS_DIR_',   'http://css.xxx.com/'        );
  define( '_THEME_JS_DIR_',    'http://js.xxx.com/'         );
  define( '_THEME_CAT_DIR_',   'http://img1.xxx.com/c/'     );
  define( '_THEME_PROD_DIR_',  'http://img1.xxx.com/p/'     ); 
  define( '_THEME_MANU_DIR_',  'http://img1.xxx.com/m/'     ); 
  define( '_PS_IMG_',          'http://img1.xxx.com/'       ); 
  define( '_PS_ADMIN_IMG_',    'http://img1.xxx.com/admin/' ); 
} else { 
  define( '_THEME_IMG_DIR_',   _THEMES_DIR_ . _THEME_NAME_ . '/img/' ); 
  define( '_THEME_CSS_DIR_',   _THEMES_DIR_ . _THEME_NAME_ . '/css/' ); 
  define( '_THEME_JS_DIR_',    _THEMES_DIR_ . _THEME_NAME_ . '/js/'  ); 
  define( '_THEME_CAT_DIR_',   __PS_BASE_URI__ . 'img/c/'            ); 
  define( '_THEME_PROD_DIR_',  __PS_BASE_URI__ . 'img/p/'            ); 
  define( '_THEME_MANU_DIR_',  __PS_BASE_URI__ . 'img/m/'            ); 
  define( '_PS_IMG_',          __PS_BASE_URI__ . 'img/'              ); 
  define( '_PS_ADMIN_IMG_',    _PS_IMG_.'admin/'                     ); 
}

...