Content Security Policy 学习笔记之三:CSP 指令的使用方式

简介: Content Security Policy 学习笔记之三:CSP 指令的使用方式

HTTP 安全标头是网站安全的重要组成部分。 它们保护店面免受潜在攻击,例如 XSS、代码注入、点击劫持等。

Owasp 很好地概述了可以应用的各种标头。

HTTP Strict-Transport-Security

HSTS 安全标头强制 Web 浏览器仅通过 https 访问店面。 这可以防止潜在的协议降级和 cookie 劫持。

这是一个非常基本的标头,应该默认应用于 Storefront 应用程序。

以下片段显示了一个示例标头配置:

Strict-Transport-Security: max-age=31536000 ; includeSubDomains

X-Frame-Options

X-Frame-Options 标头可用于防止将 Spartacus 加载到另一个来源的 iframe 中,这是减轻点击劫持的常用方法。点击劫持是一种恶意技术,它诱使用户点击与用户感知不同的内容,通常通过在原始站点的 iframe 上进行覆盖来完成。


然而,这个 X-Frame-Options 标头只能有两个值,DENY 或 SAMEORIGIN。这对于 Spartacus 作为防止点击劫持的默认策略来说太有限了,因为 Spartacus 店面在 SmartEdit 中的 iframe 中运行。 SmartEdit 在 iframe 中加载 Spartacus,实际上故意使用 Clickjacking 技术来支持内联内容管理。


Content-Security-Policy: frame-ancestors 提供了一种更复杂的方法来解决点击劫持,因此可以使用 SmartEdit,同时仍然能够防止点击劫持。 CSP 将在下文进一步详述。为了确保 IE11 用户也受到保护,X-Frame-Options 的使用仍然是相关的。如果存在带有 frame-ancestors 指令的 CSP 标头,现代浏览器将完全忽略 X-Frame-Options 标头。

X-XSS-Protection

通常建议不要使用 X-XSS-Protection 安全标头,因为它可以“在客户端引入额外的安全问题”。参看这个链接

X-Content-Type-Options

为了防止用户将恶意文件上传到后端 API(AKA MIME 嗅探漏洞),可以添加 X-Content-Type-Options 标头。

由于审核可能会报告缺少 X-Content-Type-Options,因此建议无论如何添加此标头。

例子:

X-Content-Type-Options: nosniff

Content Security Policy (CSP)

CSP 可防止各种攻击,包括跨站点脚本和其他跨站点注入。 可以使用多个指令详细指定该策略。

该政策应包括以下指令:

  • frame-ancestors 指令:允许将店面加载到 SmartEdit 框架中。
  • script-src 指令可防止从未知位置加载脚本。 这不仅包括 spartacus 静态资源,还包括 SmartEdit、Qualtrics 等用于集成的第三方 JS 文件。

script-src 指令不应使用 unsafe-inline 或unsafe-eval 来防止 XSS。

  • object-src 指令以避免任何不安全的执行(即 flash、java 等)。
  • default-src 限制为仅使用 https

参考这篇文档

相关文章
|
1月前
|
安全 前端开发 Go
Content Security Policy (CSP) 中的 frame-ancestors ‘self‘ 指令介绍
Content Security Policy (CSP) 中的 frame-ancestors ‘self‘ 指令介绍
GE IS220PVIBH1A 336A4940CSP16 一组指令程序设计语言
GE IS220PVIBH1A 336A4940CSP16 一组指令程序设计语言
60 0
GE IS220PVIBH1A 336A4940CSP16 一组指令程序设计语言
|
算法 Go Python
CSP 202203-2 出行计划 python 差分算法
CSP 202203-2 出行计划 python 差分算法
CSP 202203-2 出行计划 python 差分算法
|
人工智能 Go API
CSP 202104-4 校门外的树 python 动态规划DP + 约数优化
CSP 202104-4 校门外的树 python 动态规划DP + 约数优化
CSP 202104-4 校门外的树 python 动态规划DP + 约数优化
|
算法 Go Python
CSP 201703-4 地铁修建 python 最小生成树,并查集
CSP 201703-4 地铁修建 python 最小生成树,并查集
CSP 201703-4 地铁修建 python 最小生成树,并查集
|
Go Python
CSP 202006-2 稀疏矩阵 python 模拟
CSP 202006-2 稀疏矩阵 python 模拟
CSP 202006-2 稀疏矩阵 python 模拟
|
Go Python
CSP 201909-2 小明种苹果(续) python 暴力
CSP 201909-2 小明种苹果(续) python 暴力
CSP 201909-2 小明种苹果(续) python 暴力
|
测试技术 Go Python
CSP 202009-2 风险人群筛查 python 暴力
CSP 202009-2 风险人群筛查 python 暴力
CSP 202009-2 风险人群筛查 python 暴力
|
Go Python
CSP 202109-1 数组推导 python 思维
CSP 202109-1 数组推导 python 思维
CSP 202109-1 数组推导 python 思维
|
Go Python
CSP 202203-1 未初始化警告 python 标记数组
CSP 202203-1 未初始化警告 python 标记数组
CSP 202203-1 未初始化警告 python 标记数组