gpt4 book ai didi

node.js - 使用csrf(express + node)时禁止访问

转载 作者:太空宇宙 更新时间:2023-11-04 02:37:11 26 4
gpt4 key购买 nike

我正在尝试以 Express 方式生成 CSRF token 。我检查了相关查询,但似乎没有一个对我有帮助。我的 app.js 中有以下代码

var app = express();
var connect = require('connect');
// Disable CSRF for some requests
var conditionalCSRF = function (req, res, next) {
var whitelist = ['/login'];

if (req.method !== 'POST') {
next();
return;
}
if (whitelist.indexOf(req.url) !== -1) {
next();
} else {
//req.session._csrf || (req.session._csrf = connect.utils.uid(24));
(express.csrf())(req, res, next);
}
};

app.configure(function() {
app.use(passport.initialize());
app.use(express.bodyParser());
app.use(express.cookieParser());
app.use(passport.session());
app.use(express.session({
secret: 'applecake',
key: 'sid',
cookie : {
maxAge : 604800,
path:"/"
}
}));
app.use(conditionalCSRF);
app.use(app.router);
app.use(express.errorHandler());
});

我的表单是这样的简单表单

<form action="http://localhost:3000/conversationlist" method="post">

<div>
<input type="hidden" name="_csrf" value=token />
</div>

<div>
<input type="submit" value="Get ConversationList"/>
</div>

我使用/login URI 登录,并且工作正常,这不属于 CSRF 保护的一部分。一旦我尝试任何其他 URI,

我没有看到 CSRF token 被设置,而且我还收到一条禁止消息

Express
403 Error: Forbidden
at Object.exports.error (C:\Career\Node.JS\ExpressCHLogging\node_modules\express\node_modules\connect\lib\utils.js:63:13)
at createToken (C:\Career\Node.JS\ExpressCHLogging\node_modules\express\node_modules\connect\lib\middleware\csrf.js:82:55)
at C:\Career\Node.JS\ExpressCHLogging\node_modules\express\node_modules\connect\lib\middleware\csrf.js:54:7
at Object.ondone (C:\Career\Node.JS\ExpressCHLogging\node_modules\express\node_modules\connect\node_modules\uid2\index.js:46:8)

知道为什么我收到禁止访问的信息吗?

最佳答案

确保您的 token 变量可用于渲染引擎。

例如,如果您使用 swig,那么您应该用大括号将其括起来,如下所示:

<input type="hidden" name="_csrf" value={{ token }} />

您可以通过在浏览器中打开表单并查看页面源代码来确保正确生成 token 。如果 csrf 值已正确分配,它将显示在 token 的位置,否则将为空。

关于node.js - 使用csrf(express + node)时禁止访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21233235/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com