javascript - 在每条路线上放置 csrf 令牌
问题描述
我在我的 nodejs web 应用程序上做了一个 csrf 实现。但是只有当我通过这/login
条路线时,csrf 令牌才会被附加。我怎样才能做到它在每条路线上实施而不会导致错误?或正确实施它的另一个想法?
我认为使用通配符**
不会有帮助
这是我的 csrf 代码的代码:
app.use(
attachCsrfToken(
"/login",
"csrfToken",
(Math.random() * 100000000000000000).toString()
)
);
function attachCsrfToken(url, cookie, value) {
return function(req, res, next) {
// console.log(req.url, url);
if (req.url == url) {
res.cookie(cookie, value);
}
next();
};
}
有没有更好的方法来实现它?
解决方案
您可以创建一个验证用户和 url 的中间件,并将其添加到您要验证的任何路由中。
const express = require("express");
const router = express.Router();
function attachCsrfToken(req,res,next) {
// validate request
if (req.url == url) {
res.cookie(cookie, value);
next();
}
// if not valid throw error
res.JSON({success:false,code:403,message:'Unauthorized Access'})
};
router.use(
"/api/someroute",
attachCsrfToken,
require("./handlers/somePath").someFunction
);
推荐阅读
- r - 如果原文中包含 X,则替换为一个单词
- reactjs - 通过 Load Component React 添加 Active 类
- java - 应用程序通过 TextView.setText() 方法不断停止
- javascript - 为什么鼠标指针变为箭头而不触发图标上的单击事件?
- javascript - 如何让 DOM 操作在图像上工作?
- javascript - 在反应挂钩中通过引用更改变量
- sql - Oracle:查找表子集的空列
- javascript - 如何更新特定的 [KEY]:存储为状态变量的对象数组的 [VALUE]
- nlp - CNN 中的效果词嵌入
- node.js - 如何以角度访问formdata响应