介绍
在 Web 应用中,防止暴力破解是非常重要的一环。而 express-brute
模块提供了一个简单的防止暴力破解的方案,它可以根据请求 IP 或用户名在内存或数据库中存储失败登录次数,并在达到阈值时禁用该用户一段时间。
在 TypeScript 项目中使用 express-brute
模块时,我们可以使用 @types/express-brute
包提供的类型定义来获得更好的代码提示和类型检查。
本教程将介绍如何安装 @types/express-brute
包并使用 express-brute
模块防止暴力破解。
安装
我们可以使用 npm 进行安装:
npm install @types/express-brute --save-dev
或通过 yarn 进行安装:
yarn add -D @types/express-brute
使用
首先,在应用中引入 express-brute
模块和 express-brute-memcached
策略,以便将失败登录尝试次数存储在内存中:
-- -------------------- ---- ------- ------ - -- ------------ ---- ---------------- ------ - -- --------------------- ---- -------------------------- ----- ----- - --- --------------------- ----- ------- - - ------------ -- -- ------------------ -------- - - -- - ----- -- ----------- -------- -- - -- - ----- -- ----------- --------- -- - -- - --- -- ----------- ------------- ----- ---- ----- --------------------- -- - ------------------------- ---- ---- --- ---- ------ ----- --------- ---- ------- -- ------ --- - - ---------------------------------- - --- -------------------- - - ----------- -- ----------------- ------- ---- -- - --------------------- - -- ----- ---------- - --- ------------------- ---------
接下来,我们可以在路由器中使用 bruteforce.prevent
中间件来防止暴力破解:
import * as express from 'express'; const router = express.Router(); router.post('/login', bruteforce.prevent, (req, res) => { // 处理用户登录 });
在与其他中间件一起使用时,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