Actualmente estoy implementando el interceptor de tokens Struts2 predeterminado en todos nuestros formularios como medida contra CSRF (haciendo que un usuario ejecute una acción en nuestro producto sin saberlo, visitando otro sitio web y activando un javascript malicioso).
Algunas especificaciones técnicas en el token: cuando se usa, crea 2 campos ocultos en el formulario: un campo llamado struts.token.name
que contiene el nombre del token, y un campo con el nombre del token y un token generado aleatoriamente. Este token también se guarda en la sesión, y el nombre del token se indica en la página de configuración. Configuramos cada token de página para que tenga un nombre único basado en el nombre de la página y el ID del token, si está disponible. Esto es para que un usuario pueda tener abiertas 2 páginas de edición del mismo tipo, por ejemplo, para copiar sobre ciertos atributos de un objeto a otro.
Cuando se envía la página, se verifica si la página contiene un token del nombre indicado en la página de configuración. Si no, la página arroja un error. Si el token está presente, se verifica si el token es el mismo que el almacenado en la sesión. Si no, la página arroja un error. Si se aprueban ambas comprobaciones, la página continúa con normalidad.
Mi principal preocupación es que una página maliciosa usa Javascript para recuperar la página original, agregarla a su propia página y recuperar los campos de token relevantes para agregarlos a su propia solicitud. ¿Es esa una preocupación legítima?