En las últimas semanas, algunos usuarios están recibiendo gran cantidad de emails en chino o ruso pertenecientes al formulario de contacto de su tienda online. Esto se debe a una vulnerabilidad de PrestaShop 1.6. erradicada en la versión de PrestaShop 1.6.1.17.
Si tu tienda online está sufriendo de estos envíos masivos, debes realizar los siguientes cambios:
Índice de contenidos
Editar el fichero situado en la carpeta /controllers/front/ llamado "ContactController.php"
Primero, realizar una copia del archivo para evitar males mayores en caso de algún error de sintaxis a la hora de realizar los cambios.
Después de la siguiente línea de código:
if (Tools::isSubmit('submitMessage')) {
que suele encontrarse en la línea 38 añade la siguiente línea:
$saveContactKey = $this->context->cookie->contactFormKey;
Después de la siguiente línea de código
$message = Tools::getValue('message'); // Html entities is not usefull, iscleanHtml check there is no bad html tags.
que suele encontrarse en la línea 41 añade la siguiente línea:
$url = Tools::getValue('url');
Después de la siguiente línea de código:
$this->errors[] = Tools::displayError('Bad file extension');
que suele encontrarse en la línea 53 añade las siguientes líneas:
} elseif ($url === false || !empty($url) || $saveContactKey != (Tools::getValue('contactKey'))) { $this->errors[] = Tools::displayError('An error occurred while sending the message.');
Después de las siguientes líneas de código:
$this->context->smarty->assign('customerThread', $customer_thread); }
que suele encontrarse entre la línea 247 y 249 añade la siguientes líneas:
$contactKey = md5(uniqid(microtime(), true)); $this->context->cookie->__set('contactFormKey', $contactKey);
Sustituye la línea de código siguiente:
'message' => html_entity_decode(Tools::getValue('message'))
que suele encontrarse en la línea 252 por la siguientes líneas de código:
'message' => html_entity_decode(Tools::getValue('message')), 'contactKey' => $contactKey,
Guarda el archivo con los cambios realizados.
Editar el fichero situado en la carpeta del tema utilizado /themes/nombre del tema/ llamado "contact-form.tpl"
Primero, realizar una copia del archivo para evitar males mayores en caso de algún error de sintaxis a la hora de realizar los cambios.
Antes de la siguiente línea de código:
< button id="submitMessage" class="button btn btn-default button-medium" name="submitMessage" type="submit">{l s='Send'}
que suele encontrarse en la línea 151 añade las siguientes líneas de código:
< input class="hidden" name="url" type="text" value="" />
Guarda el archivo con los cambios realizados.
Eliminar la caché de Prestashop
Por último, accede a tu panel de administración de Prestashop, a la sección de "Parametros Avanzados" > "Rendimiento" y pulsa en "Clear Cache".
Con estos pasos dejarás de recibir estos emails masivos escritos en ruso y chino.
Fuente: https://github.com/PrestaShop/PrestaShop/pull/8168/files