Icono del sitio Hosting WEB - Servidor Dedicado - Hosting Linux

Securizar el formulario de contacto en Prestashop 1.6. ante los envíos masivos

Securizar el formulario de contacto en Prestashop 1.6.

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:

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 

Salir de la versión móvil