...
Guide de l'administrateur système
...
En résumé, il est essentiel que les directives suivantes aient les réglages indiqués :
Code Block |
---|
|
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 |
---|
|
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 |
---|
|
mysql -u USERNAME -p PASSWORD
|
Vous pourriez également utiliser la requête SQL suivante:
Code Block |
---|
|
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 |
---|
|
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 |
---|
|
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 |
---|
|
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 |
---|
|
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 |
---|
|
<LIMIT GET POST>
Require valid-user
</LIMIT>
|
...
- Sécuriser le back-office
- 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". - Protégez votre dossier d'administration avec les fichiers
.htaccess
et .htpasswd
, ou demandez à votre hébergeur de le faire pour vous. - Ne laissez pas votre navigateur garder la trace de vos mots de passe (via des cookies ou n'importe quel autre outil).
- 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).
- Sécuriser votre installation PHP
- Utilisez les réglages PHP requis et recommandés, au début du présent document.
- Effacez toujours le dossier
/install
de votre serveur après avoir installé ou mis à jour PrestaShop. - Effacez les fichiers inutiles de votre serveur de production :
- tous les fichiers
readme_xx.txt
. - le fichier
CHANGELOG
. - le dossier
/docs
.
Interdisez l'accès aux fichiers de votre thème, à l'aide d'un fichier .htaccess
ayant le contenu suivant:
Code Block |
---|
|
<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 |
---|
|
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/' );
}
|
...