PrestaShop BlogNous attirons votre attention sur une nouvelle version de PrestaShop disponible, cette dernière étant relative à la sécurité.
Grâce à l’aide précieuse de John JEAN de la société Wargan Solutions, spécialisée dans la sécurité informatique, nous sommes parvenus à corriger plusieurs failles de sécurité au sein du logiciel affectant l’ensemble des versions (de la v0.8 à la v1.3).
L’un des nombreux avantages des logiciels Open-source réside dans la sécurité et la fiabilité. En effet, notre équipe ainsi que la communauté produisent leurs meilleurs efforts afin de vous proposer un logiciel de qualité ainsi qu’une réactivité en termes de disponibilité des correctifs.
Vous bénéficiez ainsi d’un logiciel sans cesse amélioré sur le plan de la stabilité et de la sécurité, qui intègre les conseils et recommandations des meilleurs experts dans chaque domaine !
Nous vous recommandons très fortement de mettre à jour PrestaShop afin de corriger ces problèmes.
Pour mettre à jour PrestaShop dans cette nouvelle version vous pouvez :
- Mettre à jour PrestaShop avec la nouvelle version 1.3.1
Cette version est identique à la version 1.3 et corrige les problèmes liés à la sécurité.
ou
- Si vous ne souhaitez pas mettre à jour votre boutique PrestaShop, appliquer les modifications suivantes dans vos fichiers :
/!\ Important : Vous devez bien entendu au préalable avant toute chose, SAUVEGARDER vos anciens fichiers avant d’appliquer ces modifications.
Fichier : /config/smarty.config.inc.php
Où : A la fin du fichier, avant "?>"
Ajouter : $smarty->register_modifier('secureReferrer', array('Tools', 'secureReferrer'));
Fichier : /modules/paypalapi/error.tpl
Où : ligne 13
Remplacer : {$smarty.server.HTTP_REFERER}
Par : {$smarty.server.HTTP_REFERER|secureReferrer}
Fichier : /themes/prestashop/errors.tpl :
Où : ligne 9
Remplacer : {$smarty.server.HTTP_REFERER|escape:'htmlall':'UTF-8'}
Par : {$smarty.server.HTTP_REFERER|escape:'htmlall':'UTF-8'|secureReferrer}
Fichier : /themes/prestashop/shopping-cart.tpl :
Où : ligne 255
Remplacer : {$smarty.server.HTTP_REFERER|escape:'htmlall':'UTF-8'}
Par : {$smarty.server.HTTP_REFERER|escape:'htmlall':'UTF-8'|secureReferrer}
Fichier : /admin/login.php
Où : ligne 67
Remplacer :
$cookie->passwd = $employee->passwd;
$cookie->write();
Par :
$cookie->passwd = $employee->passwd;
$cookie->remote_addr = ip2long($_SERVER['REMOTE_ADDR']);
$cookie->write();
Fichier : /admin/confirm.php
Où : Ligne 22
Remplacer : $referer = rawurldecode(Tools::getValue('referer'));
Par : $referer = Tools::htmlentitiesUTF8(rawurldecode(Tools::getValue('referer')));
Fichier : /classes/Tools.php
Où : Ligne 17
Après "class Tools
{"
Ajouter ces deux fonctions :
/**
* Get the server variable SERVER_NAME
*
* @param string $referrer URL referrer
*/
static function getServerName()
{
if (isset($_SERVER['HTTP_X_FORWARDED_SERVER']) AND $_SERVER['HTTP_X_FORWARDED_SERVER'])
return $_SERVER['HTTP_X_FORWARDED_SERVER'];
return $_SERVER['SERVER_NAME'];
}
/**
* Secure an URL referrer
*
* @param string $referrer URL referrer
*/
static public function secureReferrer($referrer)
{
if (preg_match('/^http[s]?:\/\/'.self::getServerName().'\/.*$/Ui', $referrer))
return $referrer;
return __PS_BASE_URI__;
}
Fichier : /classes/Cookie.php
Où : ligne 164
Remplacer la fonction isLoggedBack() par cette fonction :
function isLoggedBack()
{
/* Employee is valid only if it can be load and if cookie password is the same as database one */
if ($this->id_employee AND Validate::isUnsignedId($this->id_employee) AND
Employee::checkPassword(intval($this->id_employee), $this->passwd) AND (!isset($this->_content['remote_addr']) OR
$this->_content['remote_addr'] == ip2long($_SERVER['REMOTE_ADDR'])))
return true;
return false;
}