14

我在我的 tomcat web.xml 中添加了以下代码片段以防止点击劫持。

在添加内置过滤器的部分中,我添加了

<filter>
    <filter-name>httpHeaderSecurity</filter-name>
    <filter-class>org.apache.catalina.filters.HttpHeaderSecurityFilter</filter-class>
    <init-param>
        <param-name>antiClickJackingOption</param-name>
        <param-value>SAMEORIGIN</param-value>
    </init-param>
</filter>

对于我添加的过滤器映射部分。

<filter-mapping>
    <filter-name>httpHeaderSecurity</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
</filter-mapping>

编辑并进行这两项更改后,测试页面(我试图在其中打开目标页面的 html 页面<frame>)通过(无法在框架内打开目标页面)。
但是 apache 欢迎页面提供了 404 的新更改。

如果我遗漏了什么,请告诉我。

4

1 回答 1

15

我对tomcat7和完全相同的过滤器也有这个问题。

您应该做的第一件事是检查 CATALINA_BASE/logs/ 下的 tomcat 日志。找到并打开localhost.YYYY-MM-DD.log;在那里你应该找到错误的原因。

在我的日志文件中,我遇到了这个错误:

SEVERE: Exception starting filter httpHeaderSecurity
java.lang.ClassNotFoundException: org.apache.catalina.filters.HttpHeaderSecurityFilter

然后我发现 HttpHeaderSecurityFilter 是在 Tomcat 版本 7.0.63(请参阅此处)中新添加的,但我运行的是版本 7.0.52(Ubuntu 14.04 LTS 附带的版本)。

我通过安装最新的 Tomcat 版本解决了这个问题,现在过滤器按预期工作。

于 2016-03-04T11:39:28.690 回答