Magento CSP: Protege tu Magento de ataques XSS

por David Abad
Magento CSP

Magento CSP (Content Security Policy) es un módulo nativo que ayuda a aumentar la seguridad de sistemas Magento, controlando el origen de los recursos cargados para prevenir ataques cross-site scripting (xss).

Qué es un ataque XSS

Un ataque XSS (Cross-Site Scripting) es una técnica que tiene como objetivo insertar código malicioso en una página web para comprometer la seguridad de los usuarios. A través de esta técnica, un atacante puede insertar código JavaScript en una página web vulnerable de tal manera que se ejecute en el navegador del usuario final. Esto permitiría que el atacante tenga acceso a información confidencial y realizar acciones en nombre del usuario, como robar contraseñas, sesiones, etc.

Los ataques XSS pueden ser de dos tipos:

  • Reflejado: El código malicioso es ejecutado en respuesta a una solicitud del usuario, como en una entrada en un formulario.
  • Almacenado: El código malicioso se guarda en la base de datos y se ejecuta cuando un usuario visita esa página. 

Qué son las cabeceras HTTP CSP

Las cabeceras HTTP Content Security Policy (CSP) son una herramienta de seguridad web que ayuda a prevenir los ataques de tipo XSS (Cross-Site Scripting). Estas cabeceras permiten al servidor web indicar al navegador una lista de fuentes seguras desde las que el navegador puede cargar recursos como scripts, imágenes, hojas de estilo, etc.

De esta manera, se evita que un atacante pueda inyectar código malicioso en una página web y comprometer la seguridad del sitio y de sus usuarios. 

A continuación se muestra un ejemplo de cabeceras CSP que permitirían la carga de scripts únicamente desde el propio dominio y la carga de imágenes desde cualquier origen:

Content-Security-Policy: default-src 'self'; img-src *

Qué es Magento CSP

El módulo Magento CSP es una característica de seguridad introducida desde la versión 2.3.5 y que permite limitar los recursos que un navegador puede cargar en una sitio web, añadiendo las cabeceras HTTP de seguridad necesarias para indicar las fuentes de las que puede provenir cada tipo de recurso.

Entre los recursos que se pueden limitar se encuentran los scripts, imágenes, estilos CSS, frames, fonts, etc. Al establecer estas limitaciones, se reduce la posibilidad de ataques malintencionados de inyección de código malicioso XSS (Cross-Site Scripting).

El módulo tiene dos modos de funcionamiento:

  • Report-only: Los recursos que no cumplen las políticas CSP son reportados (a través de la consola del navegador), pero no son bloqueados.
  • Restrict mode: Los recursos que no cumplen las políticas CSP son bloqueados.

Por defecto, el módulo funciona en modo report-only, pero es recomendable utilizar el “restrict mode” para proyectos en producción. Para cambiar el modo de funcionamiento, se debe indicar la siguiente configuración en un fichero <Modulo>/etc/config.xml:

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Store:etc/config.xsd">
    <default>
        <csp>
            <mode>
                <storefront>
                    <report_only>0</report_only>
                </storefront>
                <admin>
                    <report_only>0</report_only>
                </admin>
            </mode>
        </csp>
    </default>
</config>

Cómo añadir excepciones a Magento CSP

El módulo Magento CSP está pensado para que cada vez que se necesite añadir un recurso externo en la página, se deban definir las políticas CSP correspondientes.

Existen los siguientes tipos principales de políticas CSP:

default-src

Política por defecto (se permite todo).

script-src

Ficheros Javascript.

style-src

Hojas de estilos.

img-src

Imágenes.

media-src

Imágenes.

font-src

Fuentes tipográficas.

object-src

Objetos (object, embed, applet).

frame-src

Iframes.

frame-ancestors

Orígenes que pueden inyectar nuestra página como iframe.

form-action

Endpoints de formulario.

Para definir una nueva política CSP en nuestro proyecto, se debe indicar el tipo de política y el dominio correspondiente en un fichero <Modulo>/etc/csp_whitelist.xml con el siguiente formato:

<?xml version="1.0"?>
<csp_whitelist xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Csp:etc/csp_whitelist.xsd">
    <policies>
        <policy id="default-src">
            <values>
                <value id="developer.adobe.com" type="host">https://developer.adobe.com</value>
            </values>
        </policy>
    </policies>
</csp_whitelist>

Mantener protegido tu Magento

El módulo Magento CSP es una herramienta enfocada en la seguridad y pensada para evitar ataques XSS. Pero existen muchas otras amenazas que puede comprometer la seguridad de un sistema Magento. 

El siguiente artículo explica como utilizar la herramienta Magento Security Scan, que permite revisar periódicamente nuestro sistema Magento para detectar si existen problemas de seguridad 

Déjanos tu email para recibir contenido interesante en tu bandeja de entrada, cada mes.

¡No hacemos spam!

Otros artículos