Toute bonne bibliothèque doit fournir un échappement approprié pour les noms SQL, notamment :
- nom du schéma
- nom de la table
- nom de la colonne
Par exemple, dans pg-promise, vous l'utiliserez comme ceci :
db.query("INSERT INTO $1~ VALUES ($2, $3, $4)", [table_name, value_a, value_b, value_c])
c'est-à-dire que vous obtenez le nom de votre table correctement échappé en ajoutant la variable avec ~
, ce qui le protège de l'injection SQL.
A partir de là, un simple échappement pour les noms de table exécutés par la bibliothèque :
return '"' + name.replace(/"/g, '""') + '"';
Voir aussi :Noms SQL