Logo
Section 1 / 4

建立 CSP 和安全头部的标准

我们将学习如何采用新的浏览器和HTTP安全标准,并制定从旧HTTP头迁移的计划。

导入

建立 CSP 和安全头部的标准

我们将学习如何采用新的浏览器和HTTP安全标准,并制定从旧HTTP头迁移的计划。

X-Frame-Options

我们之前已经讨论过,使用 X-Frame-Options 响应头有助于防范 Web 应用中的点击劫持安全漏洞。

然而,技术实践在不断演进,浏览器也在快速采纳新的标准和机制。例如,X-Frame-Options 头部的 ALLOW-FROM 值已被弃用,目前不推荐使用,因为现代浏览器版本已不再支持该功能。

作为迁移方案,内容安全策略(Content Security Policy, CSP)提供了一种适应新标准的方式。其中,CSP 的 frame-ancestors 指令就是一种典型应用。例如,将该指令设置为 'none',其效果应与 X-Frame-Options 设置为 DENY 相同。

一个更完整的、用于防范点击劫持的安全控制示例是:

1Content-Security-Policy: frame-ancestors 'none';

上述 CSP 策略将禁止任何 URL 在 iframe、object 及其他属于 frame-ancestors 策略范围内的 HTML 元素中嵌入内容。

需要注意的是,较老的浏览器可能不支持 Content-Security-Policy 及其相关指令。因此,如果仅依赖 CSP,反而可能导致安全防护能力下降。

为了避免此类问题,建议根据所支持的浏览器版本矩阵,同时使用旧版和新版头部,以确保全面覆盖所有环境。

X-XSS-Protection

与 X-Frame-Options 的情况类似,X-XSS-Protection 头部也已被弃用,应强制要求建立并部署内容安全策略(CSP)HTTP 头部来替代。

尽管在面向老旧浏览器时仍可保留此头部作为辅助手段,但需注意:Chrome 和 Edge 已移除其 XSS 审计器,Firefox 也未计划实现对 X-XSS-Protection 的支持。

以下是该头部在各浏览器中的兼容性情况(摘自 MDN):

图 4-1:MDN 上 X-XSS-Protection 头部页面的部分截图(https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-XSS-Protection)
图 4-1:MDN 上 X-XSS-Protection 头部页面的部分截图(https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-XSS-Protection)

总结

随着新技术的不断发展,安全控制措施也需要持续调整和更新。这并不意味着我们此前研究的两个安全头部毫无价值。关键在于明确它们在当前场景下的适用性,并制定向更先进标准迁移的路径,最终逐步取代这些旧有机制。

安全头检测

监控您的网络应用程序