4
我是新來Sequelize(使Node.js的ORM),如果下面的代碼是安全的疑惑:Sequelize model.build(req.body)對於注射安全嗎?
var models = require('../models');
var router = require('express').Router();
router.post('/', function(req, res, next){
models.Account
.create(req.body) // <-- THIS IS WHAT MY QUESTION IS ABOUT, IS THIS SAFE?
.then(function(result){
res.status(200)
.send(result)
.end();
}).catch(next);
});
如果您正在使用這個,難道這是在某種方式不安全? 其他的解決辦法是:
var models = require('../models');
var router = require('express').Router();
router.post('/', function(req, res, next){
models.Account
.create({
username: req.body.username, // <-- THIS IS MORE VERBOSE BUT PROBABLY SAFER?
accountname: req.body.accountname,
level: req.body.level
})
.then(function(result){
res.status(200)
.send(result)
.end();
}).catch(next);
});
所以基本上我的問題是:是否可以安全使用完整的請求體作爲輸入model.create()
函數(model.set()
和model.build()
)?
聽起來像一般的有效點(如你所說)。但在這種特殊的ORM情況下,模型的驗證功能已經在ORM中。不應該在ORM中完成所有驗證嗎?保持精簡控制器通常被認爲是很好的做法。 –
如果你想以不同的方式來看待它,你正在處理與外部系統交談的兩個端點(這些都沒有什麼區別)。進出這些端點的數據應該設計用於這些端點(這不一定與您的系統需要的或者其他端點需要的相同)。 –
對不起,這是一個相當抽象的迴應。 –