jsplang参数在struts1.1中自动存储在cookie中

jsp lang parameter is automatically stored in cookie in struts 1.1

我的应用程序是 运行 struts 1.1 tomcat 7.0.47。每当我这样请求 jsp 时:

http://localhost:8080/myTestPage.jsp?lang=fr

值 lang=fr 自动存储在 cookie 中。即使 jsp 与配置中的操作无关,并且仅包含 "eclipse jsp's template code".

这是一个安全问题,因为无法控制此参数(您可以注入 JS)。

如何或为何存储此参数? 此行为仅适用于 lang 参数。

在我看来,您的 cookie 拦截器在(您的/您的其中之一)配置文件中处于活动状态,如下所示:

<action ... >
   <interceptor-ref name="cookie">
      <param name="cookiesName">cookie1</param>
      <param name="cookiesValue">cookie1value</param>
   </interceptor-ref>
   <interceptor-ref name="cookie">
      <param name="cookiesName"<cookie2</param>
     <param name="cookiesValue">cookie2value</param>
   </interceptor-ref>
   ....
 </action>

取自此link:https://struts.apache.org/core-developers/cookie-interceptor.html

最后我使用 JVM 附带的分析器 (jvisualvm.exe) 找到了导致问题的 class :

与struts无关。这是在 server.xml 文件(服务器级别)上配置的自定义 Tomcat Valve。该阀门位于 /lib 文件夹中的罐子中。

# server.xml
<Valve className="com.example.ValveExample" >

这解释了为什么我找不到 class,它在项目 class 路径中不可见。

所以我所做的只是修改阀门源代码以匹配我想要的行为,打包 Jar 并再次放入 /lib 中。