在每条路线上放置 csrf 令牌
Put csrf token on every route
我在我的 nodejs 网络应用程序上做了一个 csrf 实现。
但 csrf 令牌只有在我通过 /login
路线时才会附加。
我怎样才能在不导致错误的情况下在每条路线上实施它?
或者正确实施它的另一个想法?
我不认为使用通配符 **
会有帮助
这是我的 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
);
我在我的 nodejs 网络应用程序上做了一个 csrf 实现。
但 csrf 令牌只有在我通过 /login
路线时才会附加。
我怎样才能在不导致错误的情况下在每条路线上实施它?
或者正确实施它的另一个想法?
我不认为使用通配符 **
会有帮助
这是我的 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
);