Node.js 面试题
目录

请解释如何在 Express 中使用 csurf 中间件防止 CSRF 攻击?

· 约 4 分钟读完 · 第 314 / 377 章

推荐答案

在 Express 中使用 csurf 中间件防止 CSRF 攻击的步骤如下:

  1. 安装 csurf 中间件:

  2. 在 Express 应用中引入并使用 csurf 中间件:

  3. 在表单中嵌入 CSRF Token:

本题详细解读

什么是 CSRF 攻击?

CSRF(Cross-Site Request Forgery,跨站请求伪造)是一种常见的网络攻击方式。攻击者通过伪造用户的请求,诱使用户在不知情的情况下执行某些操作,如修改账户信息、发起转账等。

为什么需要 CSRF 防护?

CSRF 攻击利用了用户已登录的身份,通过伪造请求来执行恶意操作。为了防止这种攻击,需要在服务器端验证请求的来源是否合法。

csurf 中间件的工作原理

csurf 中间件通过在用户的会话中生成一个唯一的 CSRF Token,并将其嵌入到表单中。当用户提交表单时,服务器会验证表单中的 CSRF Token 是否与会话中的 Token 匹配。如果不匹配,则拒绝请求。

使用 csurf 的步骤

  1. 安装 csurf:通过 npm 安装 csurf 中间件。
  2. 引入并使用 csurf:在 Express 应用中引入 csurf 中间件,并配置为使用 cookie 来存储 CSRF Token。
  3. 生成 CSRF Token:在需要防护的路由中生成 CSRF Token,并将其传递给前端页面。
  4. 嵌入 CSRF Token:在前端表单中嵌入 CSRF Token,确保每次提交表单时都携带该 Token。
  5. 验证 CSRF Token:在服务器端验证提交的 CSRF Token 是否有效。

注意事项

  • Cookie 配置:csurf 中间件依赖于 cookie-parser 中间件来解析和设置 cookie,因此需要确保 cookie-parser 已正确配置。
  • Token 生成与验证:每次请求都需要生成新的 CSRF Token,并在提交时验证其有效性。
  • 安全性:确保 CSRF Token 在传输过程中不被泄露,通常通过 HTTPS 来加密传输。

通过以上步骤,可以在 Express 应用中有效地防止 CSRF 攻击。