【发布时间】:2015-08-19 19:42:44
【问题描述】:
我们有一个使用 OpenSymphony SiteMesh 组装页面的应用程序,我们添加了 OWASP ESAPI ClickjackFilter 以将 X-FRAME-OPTIONS 标头添加到响应中。
但是,只有当 ClickjackFilter 映射在 web.xml 中的 SiteMeshFilter 映射之后才有效。如果点击劫持过滤器先出现,则不会添加 X-FRAME-OPTIONS 标头。
这行得通:
<filter-mapping>
<filter-name>sitemesh</filter-name>
<url-pattern>/web/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>Clickjacking filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
这不起作用:
<filter-mapping>
<filter-name>Clickjacking filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>sitemesh</filter-name>
<url-pattern>/web/*</url-pattern>
</filter-mapping>
为什么这两个过滤器的顺序很重要?
【问题讨论】:
-
通常 xml 是按指定的顺序处理的,所以可能发生的是 sitemesh 为该标题设置了自己的选项,这就是为什么如果 clickjack 过滤器首先加载,它的设置可能会被 sitemesh 的选项。
标签: java owasp sitemesh esapi clickjacking