Я не нашел сомнений, связанных с nodejs.
Я новичок в nodejs и использую инфраструктуру JWT для создания пользовательских токенов и сеансов.Я хотел бы знать, как защитить от сеансовых атак (украсть сеанс пользователя с токеном из него) и как на самом деле защитить доступ от маршрутов, которые требуют аутентификации.
На данный момент мой код JWT с аутентификациейи маршруты таковы:
JWT
const jwt = require('jsonwebtoken');
module.exports.sign = (userId, expiresInValue) => {
const userToken = jwt.sign({ userId }, process.env.SECRET, {
expiresIn: expiresInValue // EXPIRA EM 5 MINUTO
});
return userToken;
}
module.exports.tokenAuthentication = (req, res, next) => {
console.log(req.body.token)
if(!req.body.token){
res.status(401).send({
authStatus: false,
message: "NO TOKEN PROVIDED."
}).end();
} else {
jwt.verify(req.body.token, process.env.SECRET, (error, decoded) => {
if (error) {
res.status(200).send({
authStatus: false,
message: "FAILED TO AUTHENTICATE TOKEN."
}).end();
} else {
req.body.userId = decoded.userId;
req.body.userToken = req.body.token;
req.body.userTokenExp = "5 min";
next();
}
});
}
}
ПРИМЕР МАРШРУТА
const jwtLibrary = require('../../librarys/others/JWT');
module.exports = (app) => {
app.route('/home/v1/').post(jwtLibrary.tokenAuthentication, (req, res) => {
app.controllers.home.controller.renderHomePage(req, res);
});
}
ПРИМЕР КОНТРОЛЛЕРА МАРШРУТА
module.exports.renderHomePage = (req, res) => {
res.render('home/view', {
JWT: {
userId: req.body.userId,
userToken: req.body.userToken,
userTokenExp: req.body.userTokenExp
}
});
}