PrestaShop — обновление в безопасности. версия 1.3.1

PrestaShop v.1.3.1 — Important security update

Внимание, обращаем внимание на новую версию prestashop.

При поддержке John JEAN из Wargan Solutions компании, что специализируется на компьютерной безопасности, мы нашли и исправили  несколько уязвимостей в коде которые затрагивает все версии prestashop (с v0.8 до v1.3).


Крайне рекомендуется обновить ваш магазин PrestaShop для решения проблем с безопасностью:

Для обновления вы можете:

— Обновить PrestaShop новой версией 1.3.1.

Эта версия идентична  1.3 (не включает исправления ошибок) и только проблемы безопасности исправлены

или вы можете исправить уязвимости вручную:

/!\ Не забудьте сделать копию своего магазина.

Файл: /config/smarty.config.inc.php
где: в конце файла, перед «?>»
добавить: $smarty->register_modifier(‘secureReferrer’, array(‘Tools’, ‘secureReferrer’));

Файл: /modules/paypalapi/error.tpl
где: строка 13
заменить : {$smarty.server.HTTP_REFERER}
на : {$smarty.server.HTTP_REFERER|secureReferrer}

Файл: /themes/prestashop/errors.tpl :
где: строка 9
заменить: {$smarty.server.HTTP_REFERER|escape:’htmlall’:’UTF-8′}
на: {$smarty.server.HTTP_REFERER|escape:’htmlall’:’UTF-8’|secureReferrer}

Файл:/themes/prestashop/shopping-cart.tpl :
где: строка 255
заменить: {$smarty.server.HTTP_REFERER|escape:’htmlall’:’UTF-8′}
на: {$smarty.server.HTTP_REFERER|escape:’htmlall’:’UTF-8’|secureReferrer}

Файл: /admin/login.php
где: строка 67
заменить:
$cookie->passwd = $employee->passwd;
$cookie->write();
на:
$cookie->passwd = $employee->passwd;
$cookie->remote_addr = ip2long($_SERVER[‘REMOTE_ADDR’]);
$cookie->write();

Файл: /admin/confirm.php
где: строка 22
заменить: $referer = rawurldecode(Tools::getValue(‘referer’));
на: $referer = Tools::htmlentitiesUTF8(rawurldecode(Tools::getValue(‘referer’)));

Файл: /classes/Tools.php
где: строка 17
После: «class Tools

Добавить две новых функции:

/**
* 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__;
}

Файл: /classes/Cookie.php
где: строка 164
Заменить функцию isLoggedBack() новой
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;
}