Habilitación de la protección contra la falsificación de peticiones entre sitios en REST

Se recomienda habilitar la protección de falsificación de solicitudes entre sitios (CSRF) al utilizar API de REST con cookies para la autenticación. Si la API de REST usa los tokens WCToken o WCTrustedToken para la autenticación, no se requiere protección CSRF adicional.

Por qué y cuándo se efectúa esta tarea

La falsificación de peticiones entre sitios es un tipo de intrusión malintencionada que engaña al usuario para que envíe peticiones no intencionadas a fin de modificar los datos cuando se utilizan únicamente cookies para la autenticación. Por ejemplo, un intruso puede engañar a un usuario autenticado para que pulse un enlace y actualice su información personal sin su conocimiento. En este caso, un sitio de HCL Commerce no protegido aceptaría esta petición como válida dado que existen cookies de sesión adecuadas como parte de la petición.

Sin embargo, cuando la protección de CSRF está habilitada, se necesita una cabecera de HTTP especial denominada WCAuthToken, como parte de la petición. Si se espera el token, su valor debe ser igual al atributo de solicitud authToken establecido por el tiempo de ejecución de la tienda.

Nota: La opción WCAuthToken está deshabilitada de forma predeterminada. Esto se debe a que los tokens de autenticación predeterminados, WCToken y WCTrustedToken, se pasan en el encabezado y, por lo tanto, ya protegen contra este tipo de ataque.

Procedimiento

Para habilitar el WCAuthToken para la protección CSRF:
  1. Abra el archivo de configuración del componente de la fundación personalizada WCDE_installdir/workspace/WC/xml/config/com.ibm.commerce.foundation/wc-component.xml en el Transaction server Docker container.
  2. Establezca la propiedad AuthTokenEnabled en true en el grupo de configuración REST. Por ejemplo,
    <_config:configgrouping name="REST">
      <!-- Determines if the WCAuthToken HTTP header field is required for DELETE/PUT/POST calls when cookies are used for authentication. Its value must be equal to the authToken request attribute set by the store runtime. -->
      <_config:property name="AuthTokenEnabled" value="true"/>
    </_config:configgrouping>
  3. Despliegue los cambios en el entorno de producción.

Resultados

La protección CSRF ahora se implementa para su sitio. Los usuarios de su sitio están ahora protegidos contra los ataques CSRF.