【问题标题】:Should I seperate input validation and DB query?我应该分开输入验证和数据库查询吗?
【发布时间】:2016-10-31 12:45:32
【问题描述】:

我现在正在开发 API 后端。我编写了一系列函数来查询数据库,例如:

(是的,NodeJS)

function addGuys(guys, cb) {
  var sql = 'INSERT INTO guys ...';
  guys.ForEach(function(guy) {
    // Construct sql according to keys given in `guy`
    // Validate here?
    // add col names, values to sql statment, etc
  }
  // Execute query
}

现在的问题是,我应该验证这些 DB 函数中的输入,还是应该在将输入发送到 DB 函数之前验证输入?后者看起来更干净,但我是新手,仍然不确定。任何建议都将受到欢迎。谢谢。

【问题讨论】:

    标签: node.js validation software-design


    【解决方案1】:

    您根本不应该直接自己构造 SQL。相反,您应该为此使用一个库,它自己进行验证和转义。一个流行的例子是http://docs.sequelizejs.com/en/v3/

    【讨论】:

    • 谢谢!问题仍然存在。假设我真的想更好地掌握如何构建我的查询,或者在使用任何框架之前先了解一下基础知识。我应该如何构建数据库查询和验证?
    • @ChungLunYuen:不,不要那样做。如果您不想使用“框架”,那很好,但在任何情况下都不应手动构建 SQL。这是一个正在形成的安全漏洞。您为此使用某种库。如果你问如何编写一个非常不同的数据库库。
    猜你喜欢
    • 2015-09-24
    • 1970-01-01
    • 2020-12-31
    • 1970-01-01
    • 2012-05-10
    • 2018-12-29
    • 1970-01-01
    • 2013-08-06
    • 1970-01-01
    相关资源
    最近更新 更多