Node.js / Javascript 等同于 mysql_real_escape_string()

Node.js / Javascript equivalent for mysql_real_escape_string()

提问人:cleverpaul 提问时间:9/13/2017 更新时间:9/13/2017 访问量:1885

问:

我需要使传递给 Node.js 的 JavaScript 字符串对 MSSQL 友好。

这个问题:使 javascript 字符串对 sql 友好有一个很好的答案,它解释了如何转义 MySQL 的字符串:

感谢 Paul D'Aoust

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
        }
    });
}

我需要为MSSQL实现完全相同的事情。

我花了最后一个小时(可能更长)寻找答案,但是,互联网上似乎没有很多文档来解释如何做到这一点。官方的mssql包文档只提到了预处理语句,但是,我想找到一种没有预准备语句的方法。

JavaScript 服务器 节点 .js SQL 注入

评论

3赞 Ry- 9/13/2017
为什么不想使用参数化查询?它们是正确的方法(即使对于MySQL)。
0赞 Tim Biegeleisen 9/13/2017
问题被点赞了,但是什么阻止您在 SQL Server 中编写类似的用户定义函数?
1赞 Tomalak 9/13/2017
“但是,我想找到一种方法,在没有准备好的声明的情况下做到这一点。”- 不,你真的没有。除非你准备提出真正令人信服的案例,解释为什么你的情况对于准备好的陈述来说太特殊的所有细节。每个人都在使用准备好的语句/参数与数据库进行通信。即使是非常非常复杂的解决方案也能做到这一点。为什么你认为你不能?

答: 暂无答案