npm 包 ember-cli-content-security-policy 使用教程

阅读时长 4 分钟读完

前言

在网页开发中,安全性是至关重要的一部分。为了减少网站遭到恶意攻击或本地 XSS(跨站点脚本攻击)的风险,我们可以使用 Content Security Policy(CSP)。

CSP 是一种 HTTP Header,可以让网站管理员指定从哪些来源获取资源。这样可以限制以及预防恶意资源的加载,降低 XSS 需要注入的资源数量和难易程度。

ember-cli-content-security-policy 方案

ember-cli-content-security-policy 是一个 Ember.js 的插件,用来管理 CSP。该插件提供了一些有用的组件,帮助我们轻松创建 CSP 配置,而不需要手动编写 CSP Header。

在本篇文章中,我们将通过以下步骤来学习如何使用 ember-cli-content-security-policy 插件:

  • 安装插件
  • 配置插件
  • 编写 CSP 策略
  • 确认 CSP 检查功能是否正常工作

安装插件

首先,我们需要在新建 Ember 应用中安装 ember-cli-content-security-policy 插件。打开命令行,输入以下命令:

配置插件

插件安装完毕后,我们需要在 Ember 应用的配置文件中添加插件的配置。打开 config/environment.js 文件,添加以下代码段:

-- -------------------- ---- -------
---------------------- -
  -------------- ---------
  ------------- ------- -----------------
  ----------- ---------
  -------------- ---------
  ---------- ---------
  ------------ ------- -----------------
  ------------ --------
-

以上 CSP 策略指定了默认的源、JavaScript、CSS、字体和图像等资源的来源。由于我们示例是本地开发(localhost:4200),所以我们可以直接使用 'self',如果网站上线应该指定资源的实际来源。

编写 CSP 策略

在上面的默认 CSP 策略下,如果我们在模板中引用了一个不存在的资源,浏览器将不允许该资源加载。因此,我们可以使用一些组件,以便我们不需要手动编写 CSP。

例如,在模板中使用 {{protect-script}},可以在 HTML 中生成一个用于指定 JavaScript 远程源的 CSP。

-- -------------------- ---- -------
--------- -----
------
  ------
    ----- ----------------
    ----- ------------------ -----------
    ----- --------------- -----------------------------
    --------- ----- -------------------
    ------------- --------
    ---------------- ----------------------------------- --
  -------
  ------
    ------------- --------
    ----------
  -------
-------

类似地,我们还可以使用以下组件来为标签指定源:

  • {{protect-form-action}}{{protect-action}}: 用于指定表单和表单提交地址的来源
  • {{protect-link-to}}: 用于指定转到页面的链接来源
  • {{protect-href}}: 用于指定指向其他页面的链接来源

确认 CSP 检查功能是否正常工作

最后,我们需要确认 CSP 检查功能是否正常工作。为此,我们可以使用 HackBar 等 Web 开发者工具 extension 实现。

在 Chrome 浏览器中,打开开发者工具窗口,进入 Network 面板,并选择 HackBar 工具,输入将要访问的网页 URL。当该网页加载时,我们可以检查 CSP Headers。

从以上截图中,我们可以看到 CSP 内容 'default-src': "'none'",这样的策略将不允许加载来自其他源的资源。

总结

CSP 对于网站的安全性至关重要。现有的 CSP 策略有许多的规则以及需要考虑的因素,使用 ember-cli-content-security-policy 插件有助于我们轻松创建和管理 CSP 策略。

在你的项目中使用 CSP 来提高安全性,保证网站和用户数据的安全性。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/59768

纠错
反馈