npm 包 @types/express-brute 使用教程

阅读时长 6 分钟读完

介绍

在 Web 应用中,防止暴力破解是非常重要的一环。而 express-brute 模块提供了一个简单的防止暴力破解的方案,它可以根据请求 IP 或用户名在内存或数据库中存储失败登录次数,并在达到阈值时禁用该用户一段时间。

在 TypeScript 项目中使用 express-brute 模块时,我们可以使用 @types/express-brute 包提供的类型定义来获得更好的代码提示和类型检查。

本教程将介绍如何安装 @types/express-brute 包并使用 express-brute 模块防止暴力破解。

安装

我们可以使用 npm 进行安装:

或通过 yarn 进行安装:

使用

首先,在应用中引入 express-brute 模块和 express-brute-memcached 策略,以便将失败登录尝试次数存储在内存中:

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

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

接下来,我们可以在路由器中使用 bruteforce.prevent 中间件来防止暴力破解:

在与其他中间件一起使用时,bruteforce.prevent 应该是第一个中间件,这样我们可以尽早拦截失败的请求。

示例代码

下面是一个完整的示例,使用了基于内存的存储,并通过 TypeScript 端到端地强制类型检查:

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

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

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

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

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

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

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

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

在上面的示例中,我们使用了 connect-memcached 模块作为应用程序的 session 存储引擎,并使用了 express-brute-memcached 模块作为 ExpressBrute 模块的存储策略。

结论

在本教程中,我们介绍了如何安装和使用 @types/express-brute 包,并展示了如何在 TypeScript 项目中使用 express-brute 模块防止暴力破解。express-brute 模块可以帮助我们有效地防止暴力破解攻击,从而保护我们的 Web 应用程序的安全。

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