Sécurisation des chaînes JavaScript pour les requêtes SQL dans NodeJS
Lorsque vous transmettez des chaînes fournies par l'utilisateur à NodeJS pour l'insertion de bases de données SQL, il est crucial d'empêcher SQL vulnérabilités d’injection. Un traitement régulier du texte peut suffire pour des données simples telles que les noms d'utilisateur, mais les adresses e-mail nécessitent une attention particulière. Cet article explore une solution pour améliorer la convivialité SQL des chaînes JavaScript.
Émulation de mysql_real_escape_string() de MySQL
La fonction PHP mysql_real_escape_string() nettoie les chaînes pour une insertion SQL sécurisée. Cependant, NodeJS ne propose pas nativement d’équivalent natif. Pour remédier à cela, une fonction personnalisée peut être implémentée pour imiter sa fonctionnalité en échappant les caractères problématiques dans les requêtes SQL.
Le code suivant fournit une fonction mysql_real_escape_string() personnalisée pour JavaScript :
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; } }); }
Cette fonction remplace les caractères spécifiés par leurs homologues échappés, rendant la chaîne sûre pour l'insertion SQL. Il étend même la portée des caractères d'échappement pour inclure les tabulations, les espaces arrière et « % », garantissant ainsi la compatibilité avec les requêtes LIKE.
Remarque sur la prise en compte des jeux de caractères
mysql_real_escape_string de MySQL () prend en compte les jeux de caractères, mais la fonction personnalisée fournie ici ne prend pas en compte les jeux de caractères. Cependant, son échappement large garantit qu'il fonctionne de manière fiable dans la plupart des scénarios.
Lectures complémentaires
Pour plus d'informations et de discussions sur la prévention des injections SQL, reportez-vous au site Web de l'OWASP. .
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!