Sichern von JavaScript-Zeichenfolgen für SQL-Abfragen in NodeJS
Bei der Übergabe von vom Benutzer bereitgestellten Zeichenfolgen an NodeJS zum Einfügen in die SQL-Datenbank ist es wichtig, SQL zu verhindern Sicherheitslücken bei der Injektion. Für einfache Daten wie Benutzernamen kann die normale Textverarbeitung ausreichen, E-Mail-Adressen erfordern jedoch besondere Sorgfalt. In diesem Artikel wird eine Lösung zur Verbesserung der SQL-Freundlichkeit von JavaScript-Strings untersucht.
Emulation von MySQLs mysql_real_escape_string()
Die PHP-Funktion mysql_real_escape_string() bereinigt Strings für eine sichere SQL-Einfügung. Allerdings bietet NodeJS nativ kein natives Äquivalent an. Um dies zu beheben, kann eine benutzerdefinierte Funktion implementiert werden, die ihre Funktionalität nachahmt, indem sie Zeichen maskiert, die in SQL-Abfragen problematisch sind.
Der folgende Code stellt eine benutzerdefinierte mysql_real_escape_string()-Funktion für JavaScript bereit:
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; } }); }
Diese Funktion ersetzt angegebene Zeichen durch ihre maskierten Gegenstücke und macht die Zeichenfolge für die SQL-Einfügung sicher. Es erweitert sogar den Umfang der maskierten Zeichen auf Tabulatoren, Rückschritte und „%“, um die Kompatibilität mit LIKE-Abfragen sicherzustellen.
Hinweis zur Zeichensatzkenntnis
MySQLs mysql_real_escape_string () ist zeichensatzbewusst, die hier bereitgestellte benutzerdefinierte Funktion berücksichtigt jedoch keine Zeichensätze. Das breite Zeichen-Escapen stellt jedoch sicher, dass es in den meisten Szenarien zuverlässig funktioniert.
Weiterführende Literatur
Weitere Informationen und Diskussionen zur Verhinderung von SQL-Injection finden Sie auf der OWASP-Website .
Das obige ist der detaillierte Inhalt vonWie kann ich JavaScript-Strings sicher in SQL-Abfragen in Node.js einfügen, um SQL-Injection zu verhindern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!