Kri*_*nya 4 clickjacking content-security-policy
作为点击劫持的一部分,我们正尝试将 CSP 标头作为元标记添加到我们的 angular 项目中。下面是html
<!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>
Run Code Online (Sandbox Code Playgroud)
但是,当我们尝试将页面作为 iframe 加载时,它会加载。我们已经在谷歌浏览器中进行了测试。
为了解决这个问题,我们构建了 angular 项目,将 dist 下的文件移动到了一个 Web 应用程序,添加了一个过滤器以将 CSP 标头添加到每个请求的响应中。下面是代码
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
    }
}
Run Code Online (Sandbox Code Playgroud)
这有效。
为什么在元标记中添加 CSP 标头时不起作用?我什至检查了https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy,他们提到在元标记中添加 CSP。
我知道 X-FRAME-OPTIONS 不支持 html 元标记。内容安全策略也一样吗?还是 chrome 忽略了元标记中的 CSP?
frame-ancestors如果在meta-element 策略中指定,则规范要求浏览器忽略。
因此,要应用frame-ancestors策略,您必须使用Content-Security-Policy标头。
规范引用
请参阅CSP 规范中的https://w3c.github.io/webappsec-csp/#meta-element,特别是:
注意:元素内部不支持
Content-Security-Policy-Report-Only标题。无论是,和指令。metareport-uriframe-ancestorssandbox
https://html.spec.whatwg.org/multipage/semantics.html#attr-meta-http-equiv-content-security-policy,内容安全策略状态 ( http-equiv="content-security-policy")算法的第 4 步(“此编译指示强制执行DocumentHTML 规范中关于” ) 的内容安全策略要求:
删除的所有匹配
report-uri,frame-ancestors以及sandbox指令
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           6195 次  |  
        
|   最近记录:  |