当我将 cookie 设置为安全时,我很困惑,节点的 csrf 不起作用。
//Load Cooike Parser
app.use(cookieParser(secret));
//Load Session Store
app.use(require('express-session')({
secret:secret,
cookie:{
maxAge: 1000 * 60 * 60 * 24, // 1 day,
secure: true,
httpOnly: true
},
store: sessionStore
}));
//Load POST data parser
//Form sent should be in JSON format
app.use(bodyParser.json());
//Initiate CSRF on middleware
//set the CSRF cookie Header
app.use(csrf());
app.use(function(req,res,next){
res.cookie('XSRF-TOKEN',req.csrfToken());
next();
});
此设置使用 MongoDB 存储会话数据。阅读express-session
文档,我遇到了这个......
请注意,secure: true 是推荐的选项。但是,它需要启用 https 的网站,即安全 cookie 需要 HTTPS。如果设置了安全,并且您通过 HTTP 访问您的站点,则不会设置 cookie。如果您的 node.js 位于代理后面并使用 secure: true,则需要在 express 中设置“信任代理”:
我目前在本地运行该站点,所以它不是 HTTPS。我想知道secure:true
与未通过 csrf 测试有何关系?