📜  HTTP 标头 |内容安全策略(1)

📅  最后修改于: 2023-12-03 15:15:45.049000             🧑  作者: Mango

HTTP 标头 - 内容安全策略

HTTP 标头是指在 HTTP 请求或响应中传递的元数据信息。内容安全策略 (CSP) 则是一种用于保护网站免受恶意代码攻击的安全性的机制。本文将介绍 CSP 的原理以及如何在 HTTP 标头中使用 CSP。

CSP 的原理

CSP 机制基于白名单机制,即网站管理员可以配置限制的内容来源以及允许的行为,浏览器仅允许从这些来源加载资源或执行指定的动作。这种机制可以防止常见的攻击,例如 XSS 和数据注入攻击。

CSP 通常由一个 CSP 标头配置指令列表组成,如下所示:

Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-inline' https://example.com;

上述指令列表表示默认情况下,所有来自网站自身的资源都被允许加载(default-src 'self'),网站允许加载来自自身以及 https://example.com 的脚本资源,并允许使用 unsafe-inline 的脚本(script-src 'self' 'unsafe-inline' https://example.com)。

除了上述指令,CSP 机制还可以控制以下行为:

  • img-src:限制从哪些来源加载图片
  • font-src:限制从哪些来源加载字体
  • object-src:限制从哪些来源加载插件
  • media-src:限制从哪些来源加载媒体资源
  • frame-src:限制从哪些来源加载框架
  • style-src:限制从哪些来源加载样式表

等等。

如何在 HTTP 标头中使用 CSP

要在 HTTP 标头中使用 CSP,您需要将 CSP 指令添加到 HTTP 响应标头中。 此外,您还可以配置禁止追踪或加密连接等安全机制,以确保网站访问者的数据和隐私得到保护。

以下是一个示例 CSP 标头配置:

Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-inline'; img-src 'self' data:; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; font-src 'self' https://fonts.gstatic.com;

以上配置中,我们允许网站只能加载自己的资源(default-src 'self')、仅仅允许自己的 JS 代码(script-src 'self' 'unsafe-inline'),加载图片只能从自己或 data: (base64 图片data)中加载(img-src 'self' data:),加载样式表只能从自己或 Google Fonts(style-src 'self' 'unsafe-inline' https://fonts.googleapis.com)中得到,加载字体只能是从自己或 Google Fonts(font-src 'self' https://fonts.gstatic.com)中得到。

以上指令列表视需求而定,可以进一步针对任何现有的攻击进行增强和改变,比如防止 phishing 攻击、点击劫持攻击等等。

总结

CSP 机制是一种可以让网站管理员更加完善地保护网站的一种安全性机制。使用 CSP,网站管理员可以限制行为并且增加安全性。通过本篇文章的介绍,您现在可以熟练掌握 CSP 的原理以及如何配置 CSP 指令让您的网站更加安全。