asp.net - 将可以 iframe 构建 asp.net mvc Web 应用程序的域列入白名单的正确且安全的方法是什么?
问题描述
我们有一个合作伙伴组织,我们希望能够在iframe
. 我们希望继续阻止所有其他域iframes
使用默认的 MVCsame-origin
策略运行我们的应用程序。在 MVC5 应用程序中执行此操作的当前和安全方法是什么?
使用 a 似乎Content-Security-Policy
是正确的方法,但我不清楚如何针对这个特定用例实现这一点。
解决方案
在受保护的 Web 应用程序上,您应该发布一个 HTTP 标头:
Content-Security-Policy frame-ancestors 'self' allowed-domain.com;
为此,您需要在文件[[Configuration]]
部分启用 CSP,web.config
并使用源定义列表定义指令列表:
<content-Security-Policy enabled="true">
<frame-ancestors self="true"/>
<add source="allowed-domain.com" />
</frame-ancestors>
</content-Security-Policy>
如果您安装了NWebsec
中间件,则可以使用NWebsec设置 CSP 标头。
- 您需要确保应用程序或 Web 服务器不发布
X-Frame-Options
HTTP 标头,因为所有浏览器都会忽略它以支持该frame-ancestors
指令,但 Safari 不会。所以 Safari(至少 Safari 12)将跟随X-Frame-Options
标题而不是Content-Security-Policy
一个。
推荐阅读
- laravel - Laravel路由发布错误我已经尝试了一切
- java - 为什么我的答案没有显示为 2 位小数?
- java - Hive 提取文本之前
- javascript - 无法使用 JSON 和 gridstack 读取未定义的属性 addWidget
- python - 需要帮助为此代码编写测试用例
- c# - 如何在 wix 安装程序中发送大量文件?
- swift - 检查 MKMarkerAnnotationView 在 MKMapView 中是否杂乱或杂乱无章
- jenkins - 在 Jenkins Pipeline 中获取步骤 id 以链接到 BlueOcean 或 Pipeline Steps 视图 (flowGraphTable)
- c++ - 使用 CreateFile 打开 FILE*
- excel - 错误 9 下标超出范围的问题