使 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中文网其他相关文章!