首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >内容安全策略的框架祖先指令不适用于<meta>元素

内容安全策略的框架祖先指令不适用于<meta>元素
EN

Stack Overflow用户
提问于 2018-11-01 03:28:24
回答 1查看 10.7K关注 0票数 5

作为点击劫持的一部分,我们正在尝试将CSP头作为元标记添加到我们的角度项目中。下面是html

代码语言:javascript
复制
<!doctype html>
<html lang="en">
<head>
  <meta http-equiv="Content-Security-Policy" content="frame-ancestors 'self'">
  <meta charset="utf-8">
  <title>QA Eval Webapp</title>
  <base href="/">

  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="icon" type="image/x-icon" href="favicon.ico">
</head>
<body>
  <app-root></app-root>
</body>
</html>

但是,当我们尝试以iframe的形式加载页面时,它会加载。我们已经在谷歌铬测试。

为了解决这个问题,我们构建了request,将dist下的文件移动到一个web应用程序中,添加了一个过滤器来为每个请求的响应添加CSP头。下面是代码

代码语言:javascript
复制
package com.web.beginner;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletResponse;

@WebFilter(urlPatterns="/*", filterName = "cspfilter")
public class CSPFilter implements Filter {

    @Override
    public void destroy() {
        // TODO Auto-generated method stub

    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        HttpServletResponse httpResponse = (HttpServletResponse) response;
        httpResponse.setHeader("Content-Security-Policy", "frame-ancestors 'self'");
        chain.doFilter(request, response);
    }

    @Override
    public void init(FilterConfig arg0) throws ServletException {
        // TODO Auto-generated method stub

    }

}

这个很管用。

为什么CSP头在元标记中添加时不能工作?我甚至检查了https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy,他们提到在元标记中添加CSP。

我知道X框架选项不支持html元标记。内容安全策略也是一样的吗?还是铬元素忽略了元标签中的CSP?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-01 05:35:24

规范要求浏览器忽略frame-ancestors (如果在meta-element策略中指定)。

因此,要应用frame-ancestors策略,必须使用Content-Security-Policy头。

规格引文

请参阅CSP规范中的https://w3c.github.io/webappsec-csp/#meta-element,具体如下:

注意:Content-Security-Policy-Report-Only头在meta元素中不受支持。report-uriframe-ancestorssandbox指令也是如此。

HTML中的(**http-equiv="content-security-policy**")内容安全策略状态https://html.spec.whatwg.org/multipage/semantics.html#attr-meta-http-equiv-content-security-policy算法(“在Document__上强制执行内容安全策略”)的第4步要求如下:

删除report-uriframe-ancestorssandbox指令的所有出现

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53094845

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档