Nodejs使自动csrf保护
Nodejs make automatic csrf protection
好吧,我正在构建简单的 nodejs cms。我的问题很简单,如何进行自动 CSRF 保护?因为我认为它很危险,而且我可能会在形式或路线上错过这种保护。有什么方法可以使这个过程自动化吗?
我现在正在用这个
Routes.js
// CSRF
var csrfProtection = csrf({
cookie: true
})
var parseForm = bodyParser.urlencoded({
extended: false
})
// Register
router.get("/register", csrfProtection, shouldNotBeAuthenticated, function (req, res) {
res.render("../modules/users/views/register", {
title: 'Register',
csrfToken: req.csrfToken
});
});
router.post("/register", parseForm, csrfProtection, authController.user_reigster);
表格
<form method="post" action="/users/register">
<input type="hidden" name="_csrf" value="{{csrfToken}}">
封装 CSURF。
感谢任何建议。
我认为您的方向是正确的。
中间件应应用于所有 POST 请求*。 CSURF 自述文件中的示例显示了执行此操作的方法(值得仔细阅读):
// mount api before csrf is appended to the app stack
app.use('/api', api)
// now add csrf and other middlewares, after the "/api" was mounted
app.use(bodyParser.urlencoded({ extended: false }))
app.use(cookieParser())
app.use(csrf({ cookie: true }))
您应该为用户界面使用模板语言。您应该有一个表单模板或一个过滤器,用于查找在呈现时在表单中包含 CSRF 属性的表单。
如果您制作 AJAX POSTs (XMLHttpRequest), that will also need to be thought through and is well covered on this .
* 如果你有 api 路由,应该将它们分组并从 CSRF 中排除。
好吧,我正在构建简单的 nodejs cms。我的问题很简单,如何进行自动 CSRF 保护?因为我认为它很危险,而且我可能会在形式或路线上错过这种保护。有什么方法可以使这个过程自动化吗?
我现在正在用这个
Routes.js
// CSRF
var csrfProtection = csrf({
cookie: true
})
var parseForm = bodyParser.urlencoded({
extended: false
})
// Register
router.get("/register", csrfProtection, shouldNotBeAuthenticated, function (req, res) {
res.render("../modules/users/views/register", {
title: 'Register',
csrfToken: req.csrfToken
});
});
router.post("/register", parseForm, csrfProtection, authController.user_reigster);
表格
<form method="post" action="/users/register">
<input type="hidden" name="_csrf" value="{{csrfToken}}">
封装 CSURF。
感谢任何建议。
我认为您的方向是正确的。
中间件应应用于所有 POST 请求*。 CSURF 自述文件中的示例显示了执行此操作的方法(值得仔细阅读):
// mount api before csrf is appended to the app stack
app.use('/api', api)
// now add csrf and other middlewares, after the "/api" was mounted
app.use(bodyParser.urlencoded({ extended: false }))
app.use(cookieParser())
app.use(csrf({ cookie: true }))
您应该为用户界面使用模板语言。您应该有一个表单模板或一个过滤器,用于查找在呈现时在表单中包含 CSRF 属性的表单。
如果您制作 AJAX POSTs (XMLHttpRequest), that will also need to be thought through and is well covered on this
* 如果你有 api 路由,应该将它们分组并从 CSRF 中排除。