首页 >数据库 >mysql教程 >如何在 Node.js 中安全地将 JavaScript 字符串插入 SQL 查询中以防止 SQL 注入?

如何在 Node.js 中安全地将 JavaScript 字符串插入 SQL 查询中以防止 SQL 注入?

Mary-Kate Olsen
Mary-Kate Olsen原创
2025-01-01 07:52:12159浏览

How Can I Safely Insert JavaScript Strings into SQL Queries in Node.js to Prevent SQL Injection?

保护 NodeJS 中 SQL 查询的 JavaScript 字符串

将用户提供的字符串传递到 NodeJS 进行 SQL 数据库插入时,防止 SQL 至关重要注入漏洞。常规文本处理可能足以处理用户名等简单数据,但电子邮件地址需要特别小心。本文探讨了一种增强 JavaScript 字符串的 SQL 友好性的解决方案。

模拟 MySQL 的 mysql_real_escape_string()

PHP 函数 mysql_real_escape_string() 清理字符串以安全 SQL 插入。然而,NodeJS 本身并不提供本机等效项。为了解决这个问题,可以实现一个自定义函数,通过转义 SQL 查询中存在问题的字符来模仿其功能。

以下代码为 JavaScript 提供了一个自定义 mysql_real_escape_string() 函数:

function mysql_real_escape_string(str) {
    return str.replace(/[\x08\x09\x1a\n\r"'\\%]/g, function(char) {
        switch (char) {
            case "":
                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;
            default:
                return char;
        }
    });
}

此函数将指定的字符替换为其转义的对应字符,从而使字符串对于 SQL 插入来说是安全的。它甚至扩展了转义字符的范围,包括制表符、退格键和“%”,确保与 LIKE 查询的兼容性。

字符集感知注意事项

MySQL 的 mysql_real_escape_string () 是字符集感知的,但是这里提供的自定义函数不考虑字符集。然而,其广泛的字符转义确保了它在大多数情况下都能可靠地工作。

进一步阅读

有关 SQL 注入预防的更多信息和讨论,请参阅 OWASP 网站.

以上是如何在 Node.js 中安全地将 JavaScript 字符串插入 SQL 查询中以防止 SQL 注入?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn