如何在AngularJS中将X-Frame-Options设置为响应头?

10

我从API响应中收到X-Frame-Options头部,但是我了解为了防止点击劫持攻击,我需要在UI代码中添加它。UI代码(使用AngularJS编写)部署在Tomcat(版本7.0.72)服务器上。我尝试在应用程序的web.xml中添加以下过滤器。

<filter>
        <filter-name>httpHeaderSecurity</filter-name>
        <filter-class>org.apache.catalina.filters.HttpHeaderSecurityFilter</filter-class>
        <async-supported>true</async-supported>
        <init-param>
          <param-name>antiClickJackingEnabled</param-name>
          <param-value>true</param-value>
        </init-param>
        <init-param>
          <param-name>antiClickJackingOption</param-name>
          <param-value>DENY</param-value>
        </init-param>
    </filter>

然而,我看不到标题被添加。请有人帮助我找出解决方案。


@georgeawg 这可以通过设置 X-Frame-Options 标头来实现...但我应该在哪里设置呢? - pix1289
1个回答

18

我找到了解决方案。需要通过 web.xml 在 Tomcat 服务器上添加 X-Frame-Options 响应头。我的 web.xml 中缺少 filter-mapping,因此头信息未被添加。对于其他可能遇到此问题的人,我在此处发布 web.xml 中的行:

<filter>
        <filter-name>httpHeaderSecurity</filter-name>
        <filter-class>org.apache.catalina.filters.HttpHeaderSecurityFilter</filter-class>
        <async-supported>true</async-supported>
        <init-param>
          <param-name>antiClickJackingEnabled</param-name>
          <param-value>true</param-value>
        </init-param>
        <init-param>
          <param-name>antiClickJackingOption</param-name>
          <param-value>DENY</param-value>
        </init-param>
    </filter>
  <filter-mapping> 
    <filter-name>httpHeaderSecurity</filter-name> 
    <url-pattern>/*</url-pattern>
</filter-mapping>
  <welcome-file-list>
      <welcome-file>index.html</welcome-file>
  </welcome-file-list>

有了这个设置,以下标头将被添加: • X-Frame-Options • X-Content-Type-Options • X-XSS-Protection

如果您没有为每个标头指定值,则将设置每个标头的默认值。 您可以在Tomcat服务器文档中找到默认值。


它是否启用了HSTS安全性? - Sachin HR
@SachinHR,上述代码不会起作用。但是您可以从Tomcat文档中找到参数名称和值,并将代码片段添加到web.xml中。 - pix1289
我可以在JBoss中帮忙吗? - Thilina Sampath
当重新部署Tomcat时(在Eclipse中刷新Gradle项目,从CLI清除Gradle等),您可能需要对环境进行某种硬重置才能看到这些更改生效。 - user1821961

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接