npm 包 fastify-referrer-policy 使用教程

在前端项目开发中,安全性一直是一个重要但容易被忽视的方面。其中之一便是设置正确的 Referrer-Policy,避免恶意攻击或数据泄露。而 fastify-referrer-policy 正是一个 npm 包,可以帮助我们简单快捷地设置 Referrer-Policy。

什么是 Referrer-Policy?

Referrer (引荐),是指在网络请求中,请求头部中的一个字段,用来标识该请求是从哪个页面跳转而来的。而 Referrer-Policy (引荐策略),则定义了浏览器如何传递 Referrer 头部信息。

在安全性方面,正确设置 Referrer-Policy 可以避免以下几个问题:

  • 隐藏 HTTP 请求的来源,避免恶意攻击;
  • 隐藏用户浏览器的历史记录,保护用户隐私;
  • 隐藏站点的外部链接来源,避免数据泄露;

安装 fastify-referrer-policy

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

fastify-referrer-policy 配置

在 fastify 项目中,通过注册 fastify-referrer-policy 插件,然后通过 referrerPolicy 选项来设置 Referrer-Policy。

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

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

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

以上代码中,我们设置了 Referrer-Policy 为 same-origin,意味着仅允许跨域请求头部携带与当前页面具有同域名的 Referrer 信息。

fastify-referrer-policy 可选配置项

fastify-referrer-policy 还提供了一些可选配置,可以根据需求进行设置。

policy

policy 可以配置 Referrer-Policy 的值,可以是以下任意一项:

  • no-referrer: 不传递 Referrer 头部信息;
  • no-referrer-when-downgrade: 在 HTTPS 网站的内部跳转时,传递完整 Referrer 信息;外部跳转时,不传递 Referrer 信息;
  • same-origin: 仅传递与当前页面同域名的 Referrer 信息;
  • strict-origin: 仅传递完整的同域名 Referrer 信息,但不包括子路径;
  • origin: 传递完整 Referrer 信息,但仅包括协议、域名和端口号,不包括子路径;
  • strict-origin-when-cross-origin: 在页面内跳转时,传递完整 Referrer 信息,但不包括子路径;外部跳转时,不传递 Referrer 信息;
  • unsafe-url: 始终传递完整 Referrer 信息。

例如,我们要设置 strict-origin-when-cross-origin

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

excludedRoutes

excludedRoutes 可以设置排除路由的空白列表,列表中的路由不会被 fastify-referrer-policy 插件处理 Referrer-Policy。例如:

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

表示 /assets/* 路由下的请求不会被更改 Referrer-Policy。

fastify-referrer-policy 示例

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

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

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

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

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

在以上示例中,我们定义了两个路由://about。此时,访问 http://localhost:3000/,页面 Referrer-Policy 会被设置成 strict-origin-when-cross-origin;而访问 http://localhost:3000/about,因为该路由排除了忽略列表 /api/*,所以该页面 Referrer-Policy 保持默认值。

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


猜你喜欢

  • npm 包 qd-react-native-ash-progress-hud 使用教程

    qd-react-native-ash-progress-hud 是 React Native 开发中经常使用的一款小型的组件库,主要用于实现各种加载进度动画的效果。

    3 年前
  • npm 包 force-graph-labeled-links 使用教程

    前言 在前端开发中,使用数据可视化库可以帮助我们更好地展示数据。force-graph-labeled-links 是一个开源的 JavaScript 库,可以用于创建可视化网络图。

    3 年前
  • npm 包 tamed-kafka 使用教程

    简介 tamed-kafka 是一个基于 Node.js 的 Kafka 客户端,它通过封装 Kafka 的原生 API,提供了更加友好的接口和易于使用的功能,使得在 Node.js 应用中使用 Ka...

    3 年前
  • npm 包 passando-na-tv 使用教程

    简介 passando-na-tv 是一个用于将 HTML 内容展示在 TV 上的工具。它基于 Node.js 和 Electron 构建,并提供了 API 接口方便开发人员进行扩展和集成。

    3 年前
  • npm 包 reactjs-countdown 使用教程

    前言 倒计时在许多前端项目中都是一个常见的需求,而 reactjs-countdown 就是一个可以用来实现倒计时功能的 npm 包。在本篇文章中,我们将学习如何安装和使用 reactjs-count...

    3 年前
  • npm 包 js-lcs 使用教程

    在前端开发中,有许多处理文本相关的任务,比如求两个字符串的最长公共子序列。这个问题看起来很简单,但是实现起来需要一些算法和数据结构的知识。在这篇文章中,我们将介绍一个 npm 包 js-lcs,它可以...

    3 年前
  • npm 包 angular-point-discussion-thread 使用教程

    在前端开发中,使用第三方库和插件可以大幅简化开发流程,提升编码效率。而 npm 包是目前最为流行的第三方包管理工具。其中,angular-point-discussion-thread 是一款非常实用...

    3 年前
  • npm 包 cordova-plugin-yun-wechat 使用教程

    在移动应用开发中,集成微信登录、分享、支付等功能是非常常见的需求。而使用 cordova-plugin-yun-wechat 这个 npm 包来实现这些功能可以非常简单,并且兼容各种 Cordova ...

    3 年前
  • npm 包 @bjoerge/http-browserify 使用教程

    前言 在前端开发中,我们经常需要向后端 API 发起请求获取数据,而 @bjoerge/http-browserify 是一款支持浏览器端发起 HTTP 请求的 npm 包。

    3 年前
  • npm 包 gitlab-transfer-cli 使用教程

    作为前端开发者,我们在日常开发中会经常使用 Git 以及 GitLab 这样的版本控制工具进行代码管理。但是,在项目迁移或团队合并等情况下,需要将代码库从一个 GitLab 服务器转移到另一个 Git...

    3 年前
  • npm 包 multi-geo 使用教程

    在前端开发中,我们经常需要根据用户的地理位置来提供不同的服务或内容。multi-geo 是一个非常有用的 npm 包,它可以帮助我们快速识别用户的地理位置信息,从而提供更加个性化的体验。

    3 年前
  • npm 包 react-use-class 使用教程

    介绍 react-use-class 是一个用于处理 React 组件类中样式类(class)的 npm 包。在 React 中,我们通常使用样式表(style sheet)来定义组件的样式,但如果我...

    3 年前
  • npm 包 redful-verdaccio 使用教程

    介绍 在前端开发过程中,我们经常会用到 npm 包来帮助我们完成某些功能,而自己也可以将自己的代码封装成 npm 包来方便别人使用。但是,在公司内部或者某些敏感的场合,我们可能不希望把代码提交到公共的...

    3 年前
  • npm 包 @photon-elements/photon-tools 使用教程

    前言 在前端开发中,使用各种工具可以大大提高我们的开发效率和代码可维护性。@photon-elements/photon-tools 是一个 npm 包,提供了一些常用的工具函数和 UI 组件,可以帮...

    3 年前
  • npm 包 @writ/scaffold 使用教程

    在前端开发中,我们经常需要快速地搭建项目脚手架,以便能够更快速、更高效地进行开发工作。而 npm 包 @writ/scaffold 正是一款能够快速创建项目脚手架的工具,它能够帮助我们快速完成项目架构...

    3 年前
  • npm 包 random-await 使用教程

    前言 在前端开发中,我们常常需要使用到一些随机数生成器来辅助开发。而这时,一个叫做 random-await 的 npm 包便为我们提供了便利。 在本文中,我们将学习如何安装和使用 random-aw...

    3 年前
  • npm 包 @inf3rno/promise.exposed 使用教程

    简介 @inf3rno/promise.exposed 是一个基于 Promise 的工具库,可以帮助开发者更方便地管理和操作异步任务。它提供了一系列高阶函数,可以大幅简化代码编写过程,提高开发效率。

    3 年前
  • NPM 包 mongoose-beautiful-unique-validation-fixed 使用教程

    简介 Mongoose-beautiful-unique-validation-fixed 是一个可以在 Node.js 中使用的 npm 包。该包提供了一种优雅的方式来处理 Mongoose 模型上...

    3 年前
  • npm 包 pip-services-redis-node 使用教程

    本教程旨在介绍如何使用 npm 包 pip-services-redis-node 来在 Node.js 中连接和使用 Redis 数据库。 什么是 Redis? Redis 是一个开源数据结构服务器...

    3 年前
  • npm 包 ngx-text-highlighter 使用教程

    在前端开发中,经常会需要实现文字高亮功能,比如搜索结果页面高亮关键字,或者评论区别人名和时间的高亮等。针对这种需求,我们可以使用一个非常方便的 npm 包——ngx-text-highlighter。

    3 年前

相关推荐

    暂无文章