gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-31 22:50:00 24 4
gpt4 key购买 nike

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

富 Controller

 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 模型中设置验证,但这是使用“最大允许条件”进行验证(例如,用户名字段永远不会大于 200 个字符,并且它是字符串)。我也进行路线验证。它更具体和具体(例如,在客户路径中,用户名最大为 100,但在合作伙伴路径中,用户名可能有 150 个字符,并且还要检查此字符串的内容)。

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

关于javascript - 在 sequelize.js 中使用构建方法时是否需要验证、清理或转义数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32808702/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com