Habilitar la falsificación de solicitudes en la primavera

La falsificación de petición Cross-Site (CSRF) es un tipo de intrusión malintencionada que engaña al usuario para que envíe peticiones no intencionadas. Por ejemplo, un intruso puede engañar a un usuario autenticado para que Pulse un enlace y actualice su información personal. HCL Commerce acepta esta solicitud como válida, ya que existen cookies de sesión adecuadas como parte de la solicitud.

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

Cuando está habilitada la protección contra falsificación de petición Cross-Site, se requiere un parámetro de URL designado denominado authToken para que se incluya como parte de la petición. El valor del parámetro se genera por HCL Commerce y se pasa a la página en un atributo de solicitud con el mismo nombre.

Nota: El parámetro authToken solo está disponible en páginas SSL protegidas porque esta señal no puede ser aparente. Sólo se necesita esta protección para los URL vulnerables que utilizan SSL. La protección CSRF en HCL Commerce está pensada para proteger un usuario después de haberse autenticado completamente, no en un estado parcialmente autenticado (recordado).

Procedimiento

  1. 1. Identifique el controlador que desea proteger. Por ejemplo, userRegistrationUpdate.
  2. 2. Abra el archivo de configuración de Spring donde está definido el controlador. Añada una propiedad a la acción. Asigne un nombre a la propiedad csrfProtected.
    Por ejemplo:
    <bean id="userRegistrationUpdate" class="com.ibm.commerce.store.mvc.controller.spring.RESTActionController"> 
        <property name="https" value="1"/>  
        <property name="authenticate" value="0"/>  
        <property name="parameter" value="personHandler.updatePerson"/> 
        <property name="generic" value="1"/>
     	  <property name="csrfProtected" value="1"/>     
      </bean>
    
    Nota: La petición está protegida por la protección CSRF cuando tiene un valor de propiedad de 1.
  3. 3. Edite el archivo JSP que invoca esta acción para incluir el parámetro de URL authToken.
    Por ejemplo:
    <input type="hidden" name="authToken" value="${authToken}" id="WC_UserRegistrationUpdateForm_FormInput_authToken_In_Register_1"/>
    Nota: Si el archivo JSP está almacenado en memoria caché, la parte de la página que especifica authToken se incluye en un fragmento de JSP que no está almacenado en memoria caché.
  4. 4. Despliegue los cambios en el entorno de producción.

Resultados

Nota: Cuando se ha detectado una violación de la falsificación de peticiones entre sitios, la petición se modifica para ir a la vista CrossSiteRequestForgeryErrorView. Es decir, la vista aparece cuando las peticiones que están configuradas para estar protegidas no incluyen el parámetro authToken.