网站内容更新策略(如何处理MindSphere中的内容安全策略(CSP)(组图))
优采云 发布时间: 2022-02-14 23:21网站内容更新策略(如何处理MindSphere中的内容安全策略(CSP)(组图))
MindSphere 内容安全策略概述
本节介绍如何在 MindSphere 中处理内容安全策略 (CSP)。内容安全策略是用于防止跨站点脚本 (XSS)、恶意内容和代码执行攻击或 网站 上下文中的点击劫持攻击的标准。通过将用户代理/浏览器加载的内容的来源限制在站点运营商的允许来源列表中,可以防止这种类型的攻击。
上述限制是通过与服务器响应一起发送的消息头来实现的。在 MindSphere 平台中,Content Security Policy 标头由 MindSphere Gateway 管理和发送。内容安全策略由 W3C 标准化。第 2 级版本作为 W3C 推荐提供,第 3 级版本作为 W3C 工作草案提供。
为什么使用内容安全策略?
CSP 有助于防止潜在的攻击和各种跨站点脚本漏洞。但是,您不能仅仅依赖 CSP,您必须确保您的应用程序在多个级别上免受此类攻击。以下是 CSP 的一些常见场景:
最后,我们建议您阅读 MDN 内容安全策略文档以获取可用配置的详细说明。阅读配置内容安全策略以了解如何为您的应用配置内容安全策略。
默认值和建议
我们建议您使用白名单方法,并将默认策略替换为非常严格的策略。因此,您必须为 网站 使用的任何类型的内容和资源定义允许的来源列表。您还可以使用黑名单的方法来防止您的 网站 受到攻击。
在 MindSphere Developer Cockpit 中创建应用程序时,内容安全策略的默认消息头将设置为以下值:
Content-Security-Policy:default-src 'self' static.{env}.{mindsphere-domain}; style-src * 'unsafe-inline'; script-src 'self' 'unsafe-inline' static.{env}.{mindsphere-domain}; img-src * data:;
下表给出了每个配置项的详细说明,其中 {env} 和 {mindsphere-domain} 用于,例如 eu1.mindsphere.io:
指令值说明
默认源
'self' static.{env}.{mindsphere-domain}
默认情况下,对于每个指令(如果没有被覆盖),我们只允许从我们自己的源或 {mindsphere-domain} 的静态文件中加载内容。
脚本源
'self' 'unsafe-inline' static.{env}.{mindsphere-domain}
允许从相同的源或 MindSphere 静态文件加载脚本,并在变量中执行。我们建议使用更严格的配置。
样式-src
* '不安全的内联'
允许从所有源和内联样式属性加载样式表。我们建议限制这些设置。
img-src
* 数据:
允许从所有来源加载图像并在样式表和变量中使用数据模式,例如 BASE64 编码图像。
此外,我们建议为其他内容类型定义规则:
指令示例 值 说明
子源
自己
定义加载帧的有效源。建议使用此指令代替过时的 frame-src 指令。
连接源
自己
定义执行 AJAX、WebSocket 或 EvenSource 请求的有效源。要调用外部 API,需要更改源。
字体源
自己
定义字体的有效来源。
形式-动作
自己
定义可用作操作的有效来源。
Web 框架和 Webpack
不推荐使用 JavaScript eval(),因为它以调用者的权限执行传递的代码,并且性能较差。在某些情况下,恶意方最终可能会在用户机器上运行可能导致攻击的代码。现代 JavaScript 引擎还支持不受安全和性能问题影响的创建。
然而,像 angular 或 vue.js 这样的主流框架仍然使用 eval,主要是由于底层的 web bundler webpack。在编译/捆绑应用程序时,webpack 通常用于转换现代 JavaScript 或 TypeScript 以支持多个浏览器和浏览器版本。转译后,会发出所谓的源映射,其中收录转译代码和原创代码之间的映射,以允许调试 Web 应用程序。webpack 提供了多种生成 source maps 的方式,常见的风格是cheap-eval-source-map。虽然这对于本地开发来说很好,但它可能会给生产环境带来问题,如上一节所述。
当前的默认策略强制您选择不同样式的源图,以避免 MindSphere 平台上的任何问题。您可以在官方 webpack 文档中找到替代方案。Angular 等框架也提供源地图样式配置参数。
相关链接 还有问题?
向社区提问
除非另有说明,否则此 网站 内容受 MindSphere 开发许可协议的约束。
最后更新:2019 年 7 月 11 日