SAP 电商云 Spartacus UI 里的 Content Security Policy

举报
汪子熙 发表于 2022/10/31 23:22:25 2022/10/31
【摘要】 内容安全策略(Content Security Policy,简称 CSP)是一种工具,允许开发人员指定在通过 Web 浏览器访问 Storefront 页面时允许加载哪些位置和哪些类型的资源。可以使用内容安全策略来锁定店面应用程序,并降低内容注入漏洞的风险,例如跨站点脚本 (XSS)、代码注入和点击劫持攻击(clickjacking),以及降低您的店面应用程序执行的权限。 Target P...

内容安全策略(Content Security Policy,简称 CSP)是一种工具,允许开发人员指定在通过 Web 浏览器访问 Storefront 页面时允许加载哪些位置和哪些类型的资源。

可以使用内容安全策略来锁定店面应用程序,并降低内容注入漏洞的风险,例如跨站点脚本 (XSS)、代码注入和点击劫持攻击(clickjacking),以及降低您的店面应用程序执行的权限。

Target Policy

指令可以使用 HTTP 响应标头(服务器可以发送多个具有给定资源表示的 CSP HTTP 标头字段,并且服务器可以发送具有相同资源或不同资源的不同表示的不同 CSP 标头字段值)或 HTML Meta 标记,下面的 HTTP 标头由规范定义:

  • Content-Security-Policy :由 W3C 规范定义为标准标头,由 Chrome 25 及更高版本、Firefox 23 及更高版本、Opera 19 及更高版本使用。

  • X-Content-Security-Policy :Firefox 直到版本 23 和 Internet Explorer 版本 10(部分实现内容安全策略)使用。

  • X-WebKit-CSP : Chrome 使用直到版本 25

default-src :为所有资源类型定义加载策略,以防未定义资源类型专用指令(回退),
script-src :定义受保护资源可以执行的脚本,

csp 是一个 W3C 规范,提供了指示客户端浏览器从哪个位置和/或允许加载哪种类型的资源的可能性。 为了定义加载行为,CSP 规范使用“指令”,其中指令定义目标资源类型的加载行为。

在 Content-Security-Policy 安全标头中,可以指定定义目标资源类型的加载行为的指令。 以下是推荐的指令和相应的目标:

default-src ‘self’; style-src ‘self’ ‘unsafe-inline’; img-src ‘self’

支持的指令有:

  • default-src :为所有资源类型定义加载策略,以防未定义资源类型专用指令(回退),
  • script-src :定义受保护资源可以执行的脚本。

在 Backoffice 里的设置

除了 SAP Commerce Platform 提供的安全机制外,Backoffice Framework 还提供额外的安全功能来确保 Storefront 应用的安全性。

Backoffice Framework 中的安全标头可以准确地告诉您的浏览器在处理您网站的内容和数据时的行为方式。

我们确保在 Backoffice Framework 应用程序上下文中应用安全标头,例如,与 /backoffice/* 路径一起应用。 来自 /backoffice/* 以外的资源的响应不一定具有这些标头。 在与 Backoffice Framework 的网络通信中,每个响应都有以下标头:

  • Header Content-Security-Policy (CSP): default-src ‘self’; script-src ‘self’’ ‘unsafe-inline’ ‘unsafe-eval’; connect-src ‘self’’; img-src ‘self’ data:; style-src ‘self’ ‘unsafe-inline’; font-src ‘self’’, 设置要在网站上加载的内容的批准来源,支持例如图像、HTML 框架和音频文件。可以预防 XSS, code injection 和 clickjacking

  • Header X-XSS-Protection:1; mode=block,当检测到反射 XSS 时阻止页面加载。 旧类型的浏览器最需要它。 值 1 启用 XSS 过滤。 使用其他值时,页面不会被清理。 添加值块时,不会呈现页面。 当设置值报告 reporting URI 时,页面会被清理并发送违规报告。可以预防 Compromising cookies, tokens, and XSS such as JavaScript Keylogger

  • Header Strict-Transport-Security (HSTS):max-age=31536000; includeSubDomains,自动将 http 链接转为 https,当连接的安全性无法保证时,例如 TLS 证书不可信时,不允许用户访问 Web 应用程序并返回错误。可以预防 Protocol downgrade attacks, cookies hijacking.

  • Header X-Frame-Options: SAMEORIGIN. DENY 设置不允许在任何地方显示页面,即使在同一页面上也不允许。SAMEORIGIN 允许将页面嵌入到提供该页面的站点的框架中。可以预防 Clikjacking, and embedding a page into other pages.

可以通过更改 project.properties 文件来覆盖默认值,从而减少限制:

#security headers
backoffice.response.header.X-Frame-Options=SAMEORIGIN
backoffice.response.header.Strict-Transport-Security=max-age=31536000; includeSubDomains
backoffice.response.header.X-XSS-Protection=1; mode=block
backoffice.response.header.X-Content-Type-Options=nosniff
backoffice.response.header.Content-Security-Policy=default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; connect-src 'self'; img-src 'self' data: ; style-src 'self' 'unsafe-inline'; font-src 'self'
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。