JavaScript-Strings MySQL-freundlich machen
Beim Versuch, einen JavaScript-String mit einer E-Mail-Adresse an einen NodeJS-Server zur Abfrageausführung in einem zu übergeben MySQL-Datenbank, Benutzer können auf Probleme stoßen. Während normaler Text wie Benutzernamen problemlos verarbeitet wird, stoßen E-Mail-Adressen auf Schwierigkeiten aufgrund von Sonderzeichen, die aus Gründen der SQL-Kompatibilität möglicherweise Escapezeichen erfordern.
Um dieses Problem zu beheben, wird nach einer Alternative zur Escape-Funktion gesucht: Paralleling die Funktionalität von PHPs mysql_real_escape_string(). Diese Funktion schützt vor SQL-Injections, indem sie bestimmte Zeichen maskiert.
Eine JavaScript-Implementierung von mysql_real_escape_string() ist überraschend einfach, wie aus der bereitgestellten Dokumentation hervorgeht. Hier ist die Implementierung:
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; } }); }
Beachten Sie, dass diese Implementierung über das PHP-Original hinausgeht, indem sie zusätzliche Zeichen wie Tabulatoren, Rücktasten und „%“ maskiert, sodass sie auch für LIKE-Abfragen geeignet ist.
Obwohl mysql_real_escape_string() in seinem PHP-Gegenstück zeichensatzbewusst ist, bietet diese Funktion in der JavaScript-Implementierung Vorteile unklar.
Weitere Diskussionen zu diesem Thema finden Sie unter dem angegebenen Link als Referenz.
Das obige ist der detaillierte Inhalt vonWie kann ich JavaScript-Strings für MySQL-Abfragen sicher maskieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!