Est-il acceptable d'échapper simplement les caractères dangereux de l'entrée utilisateur, puis d'exécuter la requête SQL directement, plutôt que d'utiliser des instructions préparées? Par exemple, est-ce que je pourrais juste utiliser la fonction suivante sur l'entrée, compiler la requête et puis l'exécuter?Est-il possible d'empêcher l'injection SQL sans instructions préparées (Node.js & MSSQL)
function mysql_real_escape_string (str) {
return str.replace(/[\0\x08\x09\x1a\n\r"'\\\%]/g, function (char) {
switch (char) {
case "\0":
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
}
});
}
peut être cela pourrait vous aider https://github.com/mysqljs/mysql#escaping-query-values – Garfield
Ceci est certainement un cas de [Problème XY] (https://meta.stackexchange.com/a/66378/346723), il ne devrait jamais y avoir de situation dans laquelle exécuter une requête directement et manuellement en essayant d'éviter l'injection est plus sûr ou mieux que de préparer l'instruction. Qu'est-ce que vous avez besoin de cela? – ATaco
Fondamentalement, j'ai passé toute la journée à essayer de comprendre comment utiliser les instructions préparées (pour Node.js et MSSQL) et je n'ai pas eu beaucoup de chance. (Je suis un débutant à cela). J'espérais une alternative facile. – cleverpaul