npm 包 @shopify/webpack-asset-sri-hash-verification-plugin 使用教程

随着前端应用的复杂度不断提高,我们需要一些更加安全和可靠的方式来保护我们的应用。SRI(Subresource Integrity)就是这样一种方式。SRI 允许我们使用一个哈希值来保证外部资源的完整性和安全性,防止中间人攻击和数据篡改。

@shopify/webpack-asset-sri-hash-verification-plugin 就是一个可以自动生成外部资源的哈希值,并验证哈希值的 webpack 插件。本文将介绍如何使用这个插件。

安装

使用 npm 进行安装:

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

配置 webpack

在 webpack 的配置文件中引入插件:

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

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

使用方式

插件会在应用构建过程中自动生成每个外部资源的哈希值,并将这些哈希值保存到一个 JSON 文件中。同时,插件还会在页面中插入一个 <script> 标签,用来验证外部资源的哈希值。

在你的 HTML 文件中,你需要加入以下标签:

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

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

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

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

其中最后一个标签就是用来验证外部资源的哈希值。这个文件的名字可以在 webpack 配置中通过 filename 参数自定义。

现在,每次应用重新构建时,都会生成新的外部资源的哈希值,并更新验证标签。

细节说明

在官方文档中可以看到本插件的默认黑名单:

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

如果需要在这些类型中添加其他类型,则可以在插件实例中添加黑名单:

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

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

上述示例中配置了 *.webp 为黑名单。

结论

SRI 是保证网站安全的一个非常好的实践。使用 @shopify/webpack-asset-sri-hash-verification-plugin 插件,可以非常方便地自动生成和验证哈希值,进一步提高应用的安全性。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/5f3cd9aedbf7be33b25670c9


猜你喜欢

  • npm 包 @react-google-maps/marker-clusterer 使用教程

    简介 @react-google-maps/marker-clusterer 是一个基于 React 和 Google Maps API 的 npm 包,它提供一个集群化的 Google Maps M...

    4 年前
  • npm 包 precise-proofs-js 使用教程

    precise-proofs-js 是一种用于在前端应用程序中创建 Merkle 树和验证其证明的 npm 包。在今天的区块链世界中,这是一种基本的技术,Merkle 树可以帮助我们快速验证从网络收到...

    4 年前
  • npm 包 @getify/eslint-plugin-proper-arrows 使用教程

    在 JavaScript 代码编写中,箭头函数因为书写简洁优雅、语义明确被广泛使用,但是当箭头函数中的代码块较多时,其书写风格就容易出现较多问题,使得代码难以阅读和维护。

    4 年前
  • npm 包 ethlint 使用教程

    前言 Ethlint 是一个专为 Solidity 语言智能合约开发而设的代码检查工具。它使用 Eslint 进行检查,并提供了一些 Solidity 语言的检查规则,以帮助开发者发现代码潜在的问题和...

    4 年前
  • npm包eslint-plugin-ascii使用教程

    前言 对于一名前端开发者来说,代码规范的重要性不言而喻。而其中,一个遵循 ASCII 码规范的代码,在阅读、调试和维护等方面,都能提供更好的体验和便利。为此,离不开 ESlint 的帮助和支持。

    4 年前
  • npm 包 eslint-plugin-react-functional-set-state 使用教程

    简介 eslint-plugin-react-functional-set-state 是一个 ESLint 插件,它帮助开发者检测 React 组件中非法的 this.setState 调用。

    4 年前
  • npm 包 eslint-plugin-react-perf 使用教程

    在前端开发中,我们经常会使用 React 这样的库和框架进行开发。React 虽然使用简单,但是在组件的性能优化上却需要我们一定的技巧和经验。为了帮助开发人员更好地检查组件性能方面的问题,有一个很好用...

    4 年前
  • npm 包 polly-js 使用教程

    介绍 polly-js 是一款非常实用的 npm 包,它提供了录制和回放 http 请求的功能。通过 polly-js,我们可以在开发和测试过程中方便地模拟和测试 http 请求的情况,提高开发效率和...

    4 年前
  • npm 包 eslint-plugin-security-node 使用教程

    什么是 eslint-plugin-security-node eslint-plugin-security-node 是一个利用 ESLint 为 Node.js 代码提供安全扫描的插件。

    4 年前
  • npm 包 @significa/eslint-config 使用教程

    前端开发需要遵循编码规范,以保持代码风格统一和可维护性。 ESLint 是一个开源的 JavaScript 代码检查工具,可以帮助我们在编写代码时发现语法错误、潜在错误和不一致的代码风格,以确保代码高...

    4 年前
  • npm 包 @significa/prettier-config 使用教程

    什么是 @significa/prettier-config? @significa/prettier-config 是一个 Prettier 配置包,它提供了一套针对前端项目的 Prettier 配...

    4 年前
  • npm 包 @bundled-es-modules/pdfjs-dist 使用教程

    PDF 是一种常见的文件格式,对于前端开发者来说,需要在网页中展示 PDF 文件,同时提供快速且平滑的阅读体验。今天,我们将介绍一个 npm 包 @bundled-es-modules/pdfjs-d...

    4 年前
  • npm 包 @scion-scxml/test-framework 使用教程

    前言 在前端开发中,测试是非常重要的环节,它可以帮助开发者发现代码中的 bug,减少代码在生产环境中出现的问题。而针对状态机类的代码,如何进行测试呢?这就需要使用到 @scion-scxml/test...

    4 年前
  • npm 包 xstate 使用教程

    简介 xstate 是一个状态管理库,它是一个功能强大且易于使用的 npm 包。该库能够帮助开发者更好地管理应用程序的状态,从而简化代码和提高开发效率。 在本篇文章中,我们将介绍 xstate 的主要...

    4 年前
  • npm 包 jscodeshift-find-imports 使用教程

    在前端开发过程中,经常需要对代码进行修改和重构,而某些修改需要涉及多个文件和模块的依赖关系,这时就需要用到工具来辅助我们完成这些繁琐的操作。而 jscodeshift-find-imports 就是一...

    4 年前
  • npm 包 jscodeshift-add-imports 使用教程

    在前端领域,编写并维护大型代码库是一项具有挑战性的任务。其中的一部分挑战在于管理代码的依赖关系。在 JavaScript 中,我们通过引入模块来实现该功能。然而,当我们需要添加大量的模块依赖时,手动更...

    4 年前
  • npm 包 babel-plugin-optimize-clsx 使用教程

    在前端开发中,我们常常需要对 HTML 元素的 class 属性进行操作。在 JavaScript 中,我们通常使用 classNames、classnames、classnames/bind 这些库...

    4 年前
  • npm 包 boolean 使用教程

    简介 在前端开发中,我们经常需要使用布尔类型数据。但是,在 JavaScript 中的布尔处理并不完全符合我们的需求。这时,我们就可以使用 npm 包 boolean。

    4 年前
  • npm 包 globalthis 使用教程

    什么是 globalthis? 在 JavaScript 中,全局对象是每个执行环境中访问的最顶层的对象,例如在浏览器中,全局对象为 window,而在 Node.js 中,全局对象为 global。

    4 年前
  • npm 包 domain-parent 使用教程

    在前端开发过程中,我们经常需要获取当前页面的父域名,以实现一些跨域的操作。npm 上有一个包叫 domain-parent,可以非常容易地获取当前页面的域名。本文将介绍 domain-parent 包...

    4 年前

相关推荐

    暂无文章