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