【发布时间】:2021-06-06 00:35:56
【问题描述】:
我有一个 .net 核心和 Angular 2 SaaS 应用程序。我正在尝试实现 X-Frame-Options: Deny 和 Content-Security-Policy: frame-ancestors 'none';以防止我的应用嵌入到其他框架中。
我在我的 .net Core API 中以不同的方式实现了它,并在响应标头值中获取它们。预期的行为是 iframe 的内容(这是我的网络应用程序)被阻止,但它仍在加载应用程序。
.Net 核心实现:
第一种方法:
app.Use(async (ctx, next) =>
{
ctx.Response.Headers.Add("X-Frame-Options",
"deny");
ctx.Response.Headers.Add("Content-Security-Policy",
"frame-ancestors 'none'; report-uri /cspreport");
await next();
});
使用 Nwebsec 的第二种方法
app.UseXfo(o => o.Deny());
app.UseCsp(options => options.FrameAncestors(s => s.None()));
我还在 index.html 文件的 head 部分添加了下面的元标记:
<meta http-equiv="Content-Security-Policy" charset="utf-8">
下面是我的网络选项卡,显示响应标头中的标头值:
我阅读了大量指南和文档,但仍然可以看到我的应用正在加载到 iframe 中。
任何帮助/提示将不胜感激。
更新 .net 核心 API 和 Angular 应用都部署在两个不同的 Azure 应用服务中。
【问题讨论】:
标签: asp.net-core content-security-policy x-frame-options