在 sequelize.js 中使用构建方法时是否需要验证、清理或转义数据

Do I need to validate, sanitise or escape data when using the build method in sequelize.js

我有一个 node/express/sequelize 应用程序。我在 sequelize 中使用构建方法来创建我的 foo 模型的实例。

Foo 控制器

 exports.create = function(req, res) {
     var foo = db.Foo.build(req.body);
     foo.save().then(function(){
         // do stuff
     });
 }

Foo 模型

module.exports = function(sequelize, DataTypes) {

var Foo = sequelize.define('Foo', 
{
  bar: DataTypes.STRING,
  baz: DataTypes.STRING
}

构建方法会检查我保存的数据是否干净,还是我需要在这里采取一些额外的预防措施?

我更喜欢在路由中进行二次验证,因为:

1) 将数据存储在数据库中是您可以对这些数据执行的众多操作之一。如果您只在数据库中进行验证,那么在其他地方您将获得未经验证的数据。例如,在将其保存到数据库之前,您可能需要进行一些计算或连接。

2) 或者当你在多个路由中使用一个sequelize模型时(例如客户路由和合作伙伴路由中的用户模型)并且你想制定不同的验证规则。

我总是在 sequelize 模型中设置验证,但这是使用 'maximum allowable conditions' 进行验证(例如,用户名字段永远不会大于 200 个字符,并且它是字符串)。我也进行路线验证。它更具体和具体(例如,在客户路径中,用户名最大为 100,但在合作伙伴路径中,用户名可能有 150 个字符,并且还要检查此字符串的内容)。

最后,严格回答您的问题:sequelize 验证主要用于验证格式。这还不够。看我的回答 如果您在没有正确验证的情况下保存数据,然后提供这些数据,那么您将面临 XSS 攻击。