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