SAP 电商云 Spartacus UI 里的 Content Security Policy
内容安全策略(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'
相关文章
- SAP WebClient UI界面元素ID生成的逻辑分析
- 如何自行分析SAP WebClient UI开发环境里抛出的错误消息根源
- 将SAP CRM WebClient UI的表格导出成PDF
- 关于 SAP 电商云 Spartacus UI Navigation Service 执行的一些明细
- SAP 电商云 Spartacus UI UrlMatcherService 的用法介绍 - External Route 工作的单步调试
- SAP 电商云 Spartacus UI Cart ID 的 local storage 存储
- SAP 电商云 UI State persistence 状态持久化设计的入口 - initSync
- SAP 电商云 Spartacus UI Checkout Spinner 显示的单元测试代码增强版
- 如何在 SAP 电商云 Spartacus UI 里访问 CMS Component data 数据
- SAP 电商云 Spartacus UI 4.1 版本的延迟加载技术介绍
- SAP 电商云 Spartacus UI 和 SmartEdit 本地测试环境
- SAP 电商云 Spartacus UI 的 slot,position 和 Component
- SAP 电商云 Spartacus UI 路由事件监控
- 如何找到 SAP 电商云 Spartacus UI 导航 navigation 的驱动器 - NavigationEntryItemEffects
- 如何找到 SAP 电商云 Spartacus UI 产品明细界面对应的 Angular 实现 Component 名称
- SAP 电商云 Spartacus UI 3.4.5 版本引入的对并发 SSR 请求的支持
- 如何找到SAP CRM WebClient UI error message的来源
- SAP CRM WebClient UI的cross component navigation跳转
- SAP 电商云 Spartacus UI Event Service 实现明细介绍
- SAP 电商云 Spartacus UI shipping method 切换时的 spinner 显示
- SAP 电商云 Spartacus UI ComponentDataProvider defer 工厂函数
- SAP 电商云 Spartacus UI 产品明细页面路由确定后,加载的是 page template