首页 >数据库 >mysql教程 >如何安全地转义 MySQL 查询的 JavaScript 字符串?

如何安全地转义 MySQL 查询的 JavaScript 字符串?

DDD
DDD原创
2025-01-02 18:50:38465浏览

How to Safely Escape JavaScript Strings for MySQL Queries?

使 JavaScript 字符串对 MySQL 友好

尝试将包含电子邮件地址的 JavaScript 字符串传递到 NodeJS 服务器以在 NodeJS 中执行查询时MySQL数据库,用户可能会遇到问题。虽然常规文本(例如用户名)的处理并不复杂,但电子邮件地址由于可能需要转义以实现 SQL 兼容性的特殊字符而面临困难。

为了解决此问题,需要寻找转义函数的替代方法,并行PHP 的 mysql_real_escape_string() 的功能。该函数通过转义特定字符来防止 SQL 注入。

mysql_real_escape_string() 的 JavaScript 实现非常简单,如所提供的文档中所观察到的。这是实现:

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; // prepends a backslash to backslash, percent,
                                   // and double/single quotes
            default:
                return char;
        }
    });
}

请注意,此实现超越了 PHP 原始版本,转义了其他字符,例如制表符、退格键和“%”,使其也适合 LIKE 查询。

虽然 mysql_real_escape_string() 在其 PHP 对应项中是字符集感知的,但此功能在 JavaScript 实现中的好处是不清楚。

有关此主题的进一步讨论可以在提供的链接中找到以供参考。

以上是如何安全地转义 MySQL 查询的 JavaScript 字符串?的详细内容。更多信息请关注PHP中文网其他相关文章!

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