使 javascript 字符串 sql 友好

新手上路,请多包涵

有没有办法让一个 JavaScript 字符串传递给 NodeJS 对 MySQL 友好?我正在尝试将电子邮件地址传递给我的 NodeJS 服务器并查询 MySQL 数据库。在处理诸如用户名之类的常规文本时可以正常工作,但电子邮件地址却不行。显然使用转义不是正确的答案,因为它不适用于 SQL 插入。我假设我需要 PHP 函数 mysql_real_escape_string() 的行。

原文由 Bobby 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 749
2 个回答

事实证明 mysql_real_escape_string() 非常简单。 根据文档

mysql_real_escape_string() 调用 MySQL 的库函数 mysql_real_escape_string,该函数在以下字符前添加反斜杠:\x00、\n、\r、\、’、” 和 \x1a。

听起来很简单,实际上。你可以这样做:

 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
            default:
                return char;
        }
    });
}

注意:我没有通过任何类型的单元测试或安全测试来运行它,但它似乎确实有效——而且,作为一个额外的好处,它转义了制表符、退格和“%”,因此它也可以使用在 LIKE 查询中,根据 OWASP 的建议(与 PHP 原版不同)。

我确实知道 mysql_real_escape_string() 可以识别字符集,但我不确定这会带来什么好处。

在这里 对这些问题进行了很好的讨论。

原文由 Paul d‘Aoust 发布,翻译遵循 CC BY-SA 4.0 许可协议

这是在 JavaScript 代码中编写 SQL 查询的简单方法

常量查询 = INSERT INTO users (firstName, lastName) VALUES ( "${firstName}", "${lastName}")

原文由 Priyansh sharma 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题