Ne le fais pas
Vous demandez la mauvaise solution au problème.
Pour remplacer les apostrophes par des apostrophes antislash, vous pouvez utiliser :
str = msg.replace(/'/g, '\\\'');
mais vous ne devriez pas faire cela . Je ne fournis ces informations que parce que c'est ce sur quoi porte votre question, mais lisez ci-dessous.
Pourquoi c'est une mauvaise idée
Vous ne devriez pas le faire côté client et vous ne devriez pas non plus le faire côté serveur. Si éviter les vulnérabilités d'injection SQL consistait simplement à remplacer les apostrophes par des apostrophes antislash, cela ne poserait pas de problème. Malheureusement c'est plus compliqué.
Avec les informations que vous avez fournies, il est même impossible de dire si l'apostrophe antislash ferait même ce que vous attendez en premier lieu sans voir votre code qui effectue réellement les requêtes de base de données. Mais cela n'a pas d'importance car vous ne devriez jamais faire cela. Jamais. Consultez ces réponses pour comprendre pourquoi - ces questions ne concernent pas les injections SQL, mais les exemples de code incluaient des vulnérabilités d'injection SQL et les réponses l'expliquent :
- impossible d'utiliser backtick lors de l'utilisation de nodejs 7.3.0
- Node js - Avertissement de rejet de promesse lors du traitement d'un grand nombre de données
- Est-il possible d'écouter l'instanciation d'objet dans Node.js ?
Bande dessinée obligatoire
Ce que vous devriez faire à la place
Cela dit, vous n'avez pas indiqué quel module vous utilisez pour interroger la base de données, mais peu importe si vous utilisez le mysql
module ou Sequelize ou tout ce qui vaut son sel, il devrait toujours y avoir un mécanisme d'interpolation des variables de manière sûre sans échapper et concaténer manuellement les chaînes.
Exemples
Vous n'avez même pas montré une seule ligne de code pertinente ici, donc je ne peux pas vous dire comment y remédier, mais considérez cet exemple :
Non sécurisé :
connection.query(
"SELECT * FROM player WHERE nick = '"
+ data.login + "' AND pass = '" + data.pass + "'",
function (err, rows) {
//...
}
);
Toujours dangereux, complexe, illisible, non maintenable et non fiable :
connection.query(
"SELECT * FROM player WHERE nick = '"
+ data.login.replace(/'/g, '\\\'') + "' AND pass = '" + data.pass.replace(/'/g, '\\\'') + "'",
function (err, rows) {
//...
}
);
Sûr et simple :
connection.query(
"SELECT * FROM player WHERE nick = ? AND pass = ?", [data.login, data.pass],
function (err, rows) {
// ...
}
);
Plus d'infos
Pour plus d'informations, consultez la documentation :