没有预处理语句可以阻止SQL注入(Node.js& MSSQL)

时间:2017-09-13 05:22:37

标签: javascript sql sql-server node.js sql-injection

是否可以简单地从用户输入中转义危险字符,然后直接运行SQL查询,而不是使用预准备语句?

例如,我可以在输入上使用以下函数,构建查询然后执行它吗?

function mysql_real_escape_string (str) {
    return str.replace(/[\0\x08\x09\x1a\n\r"'\\\%]/g, function (char) {
        switch (char) {
            case "\0":
                return "\\0";
            case "\x08":
                return "\\b";
            case "\x09":
                return "\\t";
            case "\x1a":
                return "\\z";
            case "\n":
                return "\\n";
            case "\r":
                return "\\r";
            case "\"":
            case "'":
            case "\\":
            case "%":
                return "\\"+char; // prepends a backslash to backslash, percent,
                                  // and double/single quotes
        }
    });
}

1 个答案:

答案 0 :(得分:0)

创建存储过程。构建数据访问层/服务。从应用程序调用服务上的方法,从应用程序传递适当的方法参数。

在我的Angular代码中,我从一个数据存储库层调用,该数据存储库层实现为在我的组件中注入的服务。