nodejs防止重放攻击代码示例
时间: 2024-11-28 13:16:55 浏览: 5
NodeJS与Mysql的交互示例代码
Node.js中,为了防止HTTP请求重放攻击,我们可以利用CSRF tokens(Cross-Site Request Forgery Tokens)或者其他安全机制。这里提供一个基本的Express框架中使用CSRF的例子:
首先,安装`express-session`和`cookie-parser`模块用于会话管理和处理Cookie:
```bash
npm install express-session cookie-parser
```
然后,在服务器端设置一个路由,并启用CSRF保护:
```javascript
const express = require('express');
const session = require('express-session');
const csrf = require('csurf');
const app = express();
app.use(express.json());
app.use(cookieParser());
// 配置session
app.use(session({
secret: 'your-secret-key', // 请替换为你的密钥
resave: false,
saveUninitialized: true,
}));
// 使用csurf中间件
app.use(csrf({ cookie: true }));
app.post('/api/sensitive-action', (req, res) => {
const { token } = req.body; //假设token是从前端POST过来的
// 检查CSRF token是否有效
if (!csrf.verify(req, token)) {
return res.status(403).send('Invalid CSRF token');
}
// 进行敏感操作...
});
```
上述代码中,每次用户发起请求,服务端都会生成一个唯一的CSRF令牌并存储在Cookie里。当再次请求时,需要将该令牌一并发送到服务器,服务器通过`csrf.verify()`检查令牌是否匹配当前请求,如果不匹配,则认为可能是重放攻击。
阅读全文