PrestaShop BlogQueremos llamar su atención sobre una nueva versión de Prestashop disponible, relativa a la seguridad.
Gracias a la inestimable ayuda de John JEAN de la empresa Wargan Solutions especializada en la seguridad informática, hemos conseguido corregir varios fallos de seguridad en el software que afectaban al conjunto de las versiones (de la v0.8 a la v1.3).
Una de las numerosas ventajas de los programas Open-source reside en la seguridad y la fiabilidad.. Nuestro equipo así como la comunidad aúnan todos sus esfuerzos para proponer un software de calidad así como una gran reactividad en términos de disponibilidad de las correcciones.
De este modo puede disfrutar de un software mejorado constantemente en cuanto a la estabilidad y a la seguridad, que integra consejos y recomendaciones de los mejores expertos en cada actividad.
Le aconsejamos que actualice PrestaShop para corregir dichos problemas.
Para actualizar PrestaShop en esta nueva versión es posible:
- Actualizar PrestaShop con la nueva versión 1.3.1.
Esta versión es idéntica a la versión 1.3, corrige los problemas relacionados con la seguridad.
o
- Si no desea actualizar su tienda PrestaShop, puede aplicar las siguientes modificaciones en sus archivos:
/!\ Importante: Es necesario que previamente haya guardado sus antiguos archivos, antes de aplicar dichas modificaciones.
Archivo: /config/smarty.config.inc.php
Donde: Al final del archivo, antes de "?>"
Añadir: $smarty->register_modifier('secureReferrer', array('Tools', 'secureReferrer'));
Archivo: /modules/paypalapi/error.tpl
Donde: linéa 13
Sustituir: {$smarty.server.HTTP_REFERER}
Por: {$smarty.server.HTTP_REFERER|secureReferrer}
Archivo: /themes/prestashop/errors.tpl :
Donde: linéa 9
Sustituir: {$smarty.server.HTTP_REFERER|escape:'htmlall':'UTF-8'}
Por: {$smarty.server.HTTP_REFERER|escape:'htmlall':'UTF-8'|secureReferrer}
Archivo: /themes/prestashop/shopping-cart.tpl :
Donde: linéa 255
Sustituir: {$smarty.server.HTTP_REFERER|escape:'htmlall':'UTF-8'}
Por: {$smarty.server.HTTP_REFERER|escape:'htmlall':'UTF-8'|secureReferrer}
Archivo: /admin/login.php
Donde: linéa 67
Sustituir:
$cookie->passwd = $employee->passwd;
$cookie->write();
Por:
$cookie->passwd = $employee->passwd;
$cookie->remote_addr = ip2long($_SERVER['REMOTE_ADDR']);
$cookie->write();
Archivo: /admin/confirm.php
Donde: linéa 22
Sustituir: $referer = rawurldecode(Tools::getValue('referer'));
Por: $referer = Tools::htmlentitiesUTF8(rawurldecode(Tools::getValue('referer')));
Archivo: /classes/Tools.php
Donde: linéa 17
Despues de "class Tools
{"
Añadir las dos funciones:
/**
* 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__;
}
Archivo: /classes/Cookie.php
Donde: linéa 164
Sustituir la funciona isLoggedBack() por la funciona:
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;
}