网站内容更新策略(如何处理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 日

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线