![](/img/trans.png)
[英]If I store a static session token in JS for use with AJAX, will it be secure against CSRF?
[英]How do I set a session cookie to secure and use CSRF tokens?
我有一個快速應用程序,試圖將會話cookie設置為安全。 到目前為止,我已經嘗試了以下代碼:
app.use(express.cookieParser());
sessionOptions = definitions.REDIS;
sessionOptions.ttl = definitions.session.expiration;
app.use(express.session({
secret: definitions.session.secret,
cookie: { <---------------------------- Added this
secure: true
},
store: new RedisStore(sessionOptions)
}));
app.use(passport.initialize());
app.use(passport.session());
app.use(express.bodyParser());
app.use(express.csrf());
app.use(function(req, res, next) {
res.locals.token = req.session._csrf;
return next();
});
但是現在當我嘗試登錄CSRF令牌時,它無法驗證,並且我收到了一個禁止的錯誤。 如何使會話cookie安全並使用CSRF令牌?
這是我用的。 我認為您不需要在next()
之前return
,但是我不確定這是否是您的問題。
app
.set('view engine', 'jade')
.set('views', __dirname + '/../views')
.set('json spaces', 2)
.use(express.compress())
.use(express.cookieParser('our secret'))
.use(express.session({
store: new RedisStore({
port: config.redisPort,
host: config.redisHost,
db: config.redisDatabase,
pass: config.redisPassword
}),
proxy: true,
cookie: { httpOnly: true, secure: true }
}))
.use(express.bodyParser())
.use(express.methodOverride())
.use(express.csrf())
.use(function (req, res, next) {
res.cookie('XSRF-TOKEN', req.csrfToken());
res.locals.csrftoken = req.csrfToken();
next();
})
.use(everyauth.middleware());
proxy: true
對於Heroku是必需的。 請注意,最新版本的Express已淘汰了req.session._csrf
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.