讓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中文網其他相關文章!