2

我正在尝试在 Tomcat 中启用 HttpHeaderSecurityFilter 过滤器以对抗点击劫持攻击。我希望将其应用于所有应用程序,因此在 Tomcat 自己的 conf/web.xml 文件中取消注释此过滤器的默认 <filter> 和 <filter-mapping> 条目。

尽管据我所知,Tomcat似乎完全忽略了这一点。我将 META-INF/context.xml 文件添加到我的一个 Web 应用程序中,如下所示,以便在将 conf/web.xml 文件与应用程序自己的文件合并后查看 Tomcat 用于该应用程序的有效 web.xml 文件。

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<Context logEffectiveWebXml="true"></Context>

catalina.log 中的结果输出看起来有效(两个文件的内容合并),但 conf/web.xml 中的过滤器条目丢失。我尝试在那里引入我自己的附加过滤器条目,发现这些条目也没有出现在有效的 web.xml 中。

如果我将 HttpHeaderSecurityFilter 过滤器和过滤器映射条目复制到 Web 应用程序自己的 web.xml 文件中,它可以正常工作(但这显然不是我想要的!)

是否有一些技巧可以让 Tomcat 尊重 conf/web.xml 中的过滤器条目?

我最终需要它在 Tomcat 7 和 8 中工作。(我知道内置过滤器仅在 Tomcat 7.0.63 中添加。)

4

1 回答 1

0

最终,这个过滤器开始为我工作而没有任何特别的变化(非常不令人满意的分辨率,但是......)。它有可能从一开始就起作用,尽管我有理由确定我已经观察到页面被成功加载到 iframe 中,并且过滤器最初就位。只是现在不确定。

对其他人来说可能有用的发现是,即使我能够验证过滤器是否正常工作,有效的 web.xml 日志输出中也从未包含过滤器详细信息。这似乎是某种 Tomcat 错误。(注意,我只在 Tomcat 8 上测试了有效的 web.xml 日志记录。)

于 2015-10-21T12:57:11.757 回答