bla*_*dev 5 javascript security node.js express sequelize.js
我有一个节点/快递/续集应用程序.我在sequelize中使用构建方法来创建我的foo模型的实例.
Foo控制器
exports.create = function(req, res) {
var foo = db.Foo.build(req.body);
foo.save().then(function(){
// do stuff
});
}
Run Code Online (Sandbox Code Playgroud)
Foo模型
module.exports = function(sequelize, DataTypes) {
var Foo = sequelize.define('Foo',
{
bar: DataTypes.STRING,
baz: DataTypes.STRING
}
Run Code Online (Sandbox Code Playgroud)
构建方法是否检查我保存的数据是否干净,或者我是否需要采取一些额外的预防措施?
我更喜欢在路由中进行二次验证,因为:
1) 将数据存储在数据库中是您可以使用该数据执行的众多操作之一。如果您仅在数据库中进行验证,那么在其他地方您会得到未经验证的数据。例如,在将其保存到数据库之前,您可能需要一些计算或串联。
2)或者当您在多个路线中使用一个续集模型(例如客户路线和合作伙伴路线中的用户模型)并且您想要制定不同的验证规则时。
我总是在续集模型中设置验证,但这是使用“最大允许条件”进行验证(例如,用户名字段永远不会大于 200 个字符,并且它是字符串)。我还进行了路线验证。它更加具体和具体(例如,在客户路由中用户名最大为 100,但在合作伙伴路由中用户名可能有 150 个字符,并且还要检查该字符串的内容)。
最后,严格回答您的问题:续集验证主要用于验证格式。但这还不够。看看我的答案NodeJS/express - security for public API Endpoint 如果您在没有正确验证的情况下保存数据,然后提供此数据,那么您将面临 XSS 攻击。