Lad være med at gøre det
Du spørger om den forkerte løsning på problemet.
For at erstatte apostroferne med backslash-apostroferne kan du bruge:
str = msg.replace(/'/g, '\\\'');
men du bør ikke gøre det . Jeg giver kun disse oplysninger, fordi det er det, dit spørgsmål spørger om, men læs nedenfor.
Hvorfor er det en dårlig idé
Du bør ikke gøre det på klientsiden, og du bør heller ikke gøre det på serversiden. Hvis undgåelse af SQL-injection-sårbarheder var et simpelt spørgsmål om at erstatte apostrof med backslash-apostrof, så ville det ikke være et problem. Desværre er det mere kompliceret.
Med de oplysninger, du har givet, er det endda umuligt at sige, om backslash-apostrof overhovedet ville gøre, hvad du forventer i første omgang uden at se din kode, der rent faktisk laver databaseforespørgsler. Men det gør ikke noget, for du bør aldrig nogensinde gøre det. Aldrig. Se disse svar for at se hvorfor - disse spørgsmål handler ikke om SQL-injektioner, men kodeeksemplerne inkluderede SQL-injektionssårbarheder, og svarene forklarer det:
- kan ikke bruge backtick, når du bruger nodejs 7.3.0
- Node js - Advarsel om løfteafvisning ved behandling af mange data
- Er det muligt at lytte efter objektinstansiering i Node.js?
Obligatorisk tegneserie
Hvad du bør gøre i stedet
Når det er sagt, fortalte du ikke, hvilket modul du bruger til at forespørge i databasen, men uanset om du bruger mysql
modul eller Sequelize eller noget, der er salt værd, bør der altid være en mekanisme til at interpolere variabler på en sikker måde uden manuelt at undslippe og sammenkæde strengene.
Eksempler
Du viste ikke en enkelt kodelinje, der er relevant her, så jeg kan ikke fortælle dig, hvordan du løser det, men overvej dette eksempel:
Usikkert:
connection.query(
"SELECT * FROM player WHERE nick = '"
+ data.login + "' AND pass = '" + data.pass + "'",
function (err, rows) {
//...
}
);
Stadig usikker, kompleks, ulæselig, uvedligeholdelig og upålidelig:
connection.query(
"SELECT * FROM player WHERE nick = '"
+ data.login.replace(/'/g, '\\\'') + "' AND pass = '" + data.pass.replace(/'/g, '\\\'') + "'",
function (err, rows) {
//...
}
);
Sikkert og enkelt:
connection.query(
"SELECT * FROM player WHERE nick = ? AND pass = ?", [data.login, data.pass],
function (err, rows) {
// ...
}
);
Flere oplysninger
For mere information se dokumenterne: