【发布时间】:2012-07-29 07:09:29
【问题描述】:
在 ruby 中,可以执行<%= form_tag(:action => '/submit') do %> ... <% end %> 之类的操作来获取包含 CSRF 令牌的表单。
node中是否有现成的功能,它是如何实现的?
【问题讨论】:
标签: node.js csrf csrf-protection
在 ruby 中,可以执行<%= form_tag(:action => '/submit') do %> ... <% end %> 之类的操作来获取包含 CSRF 令牌的表单。
node中是否有现成的功能,它是如何实现的?
【问题讨论】:
标签: node.js csrf csrf-protection
您可以将 caolan-forms plugin 用于 node.js。之后安装express-csrf plugin。
然后你可以合并这两个,比如:
// initializing express
var express = require('express'),
// initializing express-csrf
csrf = require('express-csrf');
app = express.createServer();
app.dynamicHelpers({
csrf: csrf.token
});
var forms = require('forms'),
fields = forms.fields,
validators = forms.validators;
var reg_form = forms.create({
username: fields.string({required: true, id: csrf, name: csrf}),
});
// finally render the form
reg_form.toHTML();
它会产生:
<div class="field required">
<label for="id_username">Username</label>
<input type="text" name="[csrf-value]" id="[csrf-value]" value="test" />
</div>
注意: caolan-forms 的作者写道:
你会注意到你必须提供你自己的表单标签和提交按钮,这样更灵活;)
由于 express-csrf 已被贬低,请改用 connect bundle 并遵循 this 简单示例。最终,您将能够将其与 caolan-forms 集成,例如:
var reg_form = forms.create({
'_csrf':fields.hidden({value: 'req.session._csrf'}),
...
})
【讨论】:
csfr.check()。
This module is deprecated Please use the csrf middleware bundled with Connect instead.github.com/hanssonlarsson/express-csrf
npm install connect 安装并在github.com/senchalabs/connect 检查其Git 存储库