Añadir Protección ante CSRF

Los ataques Cross-Site Request Forgery (CSRF) pueden evitarse si activamos el filtro CsrfProtectionFilter en la parte servidor del servicio Rest.

Configuración para el Servidor

Para activar el filtro CsrfProtectionFilter en la parte servidor, tenemos que añadir la siguiente configuración en el fichero web.xml:

      <context-param>
          <param-name>com.sun.jersey.spi.container.ContainerRequestFilters</param-name>
          <param-value>com.sun.jersey.api.container.filter.CsrfProtectionFilter</param-value>
      </context-param>

Si se configra el servicio con el filtro, los clientes también tienen que ser compatibles con el y añadir la configuración del siguiente punto.

Configuración para el Cliente

Para activar el filtro CsrfProtectionFilter y que en las peticiones se añada automaticamente la cabecera X-Requested-By.

Para añadir el filtro a todos los recursos creados por el generador de clientes.

    String requestByValue = ...;
    ClientFilter csrfFilter = new com.sun.jersey.api.client.filter.CsrfProtectionFilter( requestByValue );
    Client c = Client.create();
    c.addFilter( csrfFilter );
    ...

Para añadir el filtro a un recurso concreto generado por el generador de clientes.

    String requestByValue = ...;
    ClientFilter csrfFilter = new com.sun.jersey.api.client.filter.CsrfProtectionFilter( requestByValue );
    Client c = Client.create();
    WebResource r = c.resource(...);
    r.addFilter( csrfFilter );
    ...
  • fdw2.0/fundeweb2.0/gt/rest/guia_csrf_filter.txt
  • Última modificación: 26/10/2018 10:39
  • por JUAN MIGUEL BERNAL GONZALEZ